java如何引用非静态方法_java – 无法对非静态方法进行静态引用

由于getText()是非静态的,你不能从静态方法调用它。

要理解为什么,你必须了解两者之间的区别。

实例(非静态)方法适用于特定类型(类)的对象。这些用新的创建如下:

SomeClass myObject = new SomeClass();

要调用实例方法,可以在实例(myObject)上调用它:

myObject.getText(...)

但是静态方法/字段只能直接调用类型,像这样:

前面的语句不正确。 One can also refer to static fields with an object reference like myObject.staticMethod()但是这是不鼓励的,因为它不能清楚地表明它们是类变量。

... = SomeClass.final

并且两者不能一起工作,因为它们在不同的数据空间(实例数据和类数据)上操作,

让我尝试和解释。考虑这个类(psuedocode):

class Test {

string somedata = "99";

string getText() { return somedata; }

static string TTT = "0";

}

现在我有以下用例:

Test item1 = new Test();

item1.somedata = "200";

Test item2 = new Test();

Test.TTT = "1";

什么是价值观?

in item1 TTT = 1 and somedata = 200

in item2 TTT = 1 and somedata = 99

换句话说,TTT是由该类型的所有实例共享的数据。所以说没有意义

class Test {

string somedata = "99";

string getText() { return somedata; }

static string TTT = getText(); // error there is is no somedata at this point

}

所以问题是为什么是TTT静态或为什么是getText()不静态?

删除静态,它应该会遇到这个错误 – 但没有理解你的类型,它只是一个坚硬的石膏,直到下一个错误。 getText()的要求是什么,要求它是非静态的?

你可能感兴趣的:(java如何引用非静态方法)