Karena getText()
non-statis Anda tidak dapat memanggilnya dari metode statis.
Untuk memahami alasannya, Anda harus memahami perbedaan di antara keduanya.
Metode contoh (non-statis) bekerja pada objek yang berjenis tertentu (kelas). Ini dibuat dengan yang baru seperti ini:
SomeClass myObject = new SomeClass();
Untuk memanggil metode instance, Anda memanggilnya di instance ( myObject
):
myObject.getText(...)
Namun metode / field statis hanya dapat dipanggil pada tipe secara langsung, katakan seperti ini:
Pernyataan sebelumnya tidak benar. Anda juga dapat merujuk ke bidang statis dengan referensi objek seperti myObject.staticMethod()
tetapi hal ini tidak disarankan karena tidak menjelaskan bahwa mereka adalah variabel kelas.
... = SomeClass.final
Dan keduanya tidak dapat bekerja sama karena beroperasi pada ruang data yang berbeda (data contoh dan data kelas)
Biar saya coba dan jelaskan. Pertimbangkan kelas ini (psuedocode):
class Test {
string somedata = "99";
string getText() { return somedata; }
static string TTT = "0";
}
Sekarang saya memiliki kasus penggunaan berikut:
Test item1 = new Test();
item1.somedata = "200";
Test item2 = new Test();
Test.TTT = "1";
Apa nilainya?
Baik
in item1 TTT = 1 and somedata = 200
in item2 TTT = 1 and somedata = 99
Dengan kata lain, TTT
adalah datum yang dibagikan oleh semua instance tipe. Jadi tidak masuk akal untuk mengatakannya
class Test {
string somedata = "99";
string getText() { return somedata; }
static string TTT = getText(); // error there is is no somedata at this point
}
Jadi pertanyaannya adalah mengapa TTT statis atau mengapa getText () tidak statis?
Hapus static
dan itu harus melewati kesalahan ini - tetapi tanpa memahami apa jenis Anda lakukan itu hanya plester yang menempel sampai kesalahan berikutnya. Apa persyaratan getText()
yang mengharuskannya menjadi non-statis?