Depuis getText est non-statique, vous ne pouvez pas appeler à partir d'une méthode statique.
Pour comprendre pourquoi, vous devez comprendre la différence entre les deux.
Exemple (non statique) méthodes de travail sur des objets d'un type particulier (la classe). Ceux-ci sont créés avec la nouvelle comme ceci:
SomeClass myObject = new SomeClass();
Pour appeler une méthode d'une instance, vous l'appelez sur l'instance (monobjet):
myObject.getText(...)
Cependant une méthode statique/champ peut être appelée uniquement sur le type directement, disons le comme ceci:
La précédente déclaration n'est pas correcte. On peut également se référer à des champs statiques avec un objet de référence comme myObject.staticMethod()
mais cela est déconseillé, car il ne précise pas qu'ils sont des variables de classe.
... = SomeClass.final
Et les deux ne peuvent pas travailler ensemble, car ils fonctionnent sur différents espaces de données (données d'instance et de classe de données)
Permettez-moi de tenter de l'expliquer. Considérez cette classe (psuedocode):
class Test {
string somedata = "99";
string getText() { return somedata; }
static string TTT = "0";
}
Maintenant, j'ai la suite de cas d'utilisation:
Test item1 = new Test();
item1.somedata = "200";
Test item2 = new Test();
Test.TTT = "1";
Quelles sont les valeurs?
Bien
in item1 TTT = 1 and somedata = 200
in item2 TTT = 1 and somedata = 99
En d'autres termes TTT est une donnée qui est partagée par toutes les instances de ce type. Donc il n'ont pas de sens à dire
class Test {
string somedata = "99";
string getText() { return somedata; }
static string TTT = getText(); // error there is is no somedata at this point
}
Donc la question est: pourquoi est - TTT statique ou pourquoi est-getText() et non statique?
Supprimer la statique et il devrait sortir de cette erreur, mais sans comprendre ce que votre type n'est qu'un sparadrap jusqu'à la prochaine erreur. Quelles sont les exigences de getText qui nécessitent d'être non statique?