【发布时间】:2018-12-08 12:56:24
【问题描述】:
我了解“无法对非静态方法进行静态引用”错误,但我遇到了这个错误:
public class MyClass {
public static void main(String[] args) {
MyClass myClassInstance = new MyClass();
while (true) {
myClassInstance.myMethod();
myMethod();//Cannot make a static reference to the non-static method myMethod()
}
}// END main
void myMethod() {
try {
//Stuff
}
} catch (Exception e) {
myMethod();
}
}// END myMethod
}// END MyCLass
我不能只从main 调用myMethod(),但我可以从方法本身内部调用(在这种情况下,如果发生异常,我想再次调用myMethod())。
这是如何工作的? myClassInstance 是否还在那里,因为那时我还在 myMethod() 里面?
在课堂上使用static MyClass myClassInstance = new MyClass() 然后每次都调用myClassInstance.myMethod() 会更好吗?
【问题讨论】:
-
当然不能。另一个方法是 MyClass 类实例的一部分,而不是类本身。你真的应该了解类和对象方法
-
myMethod 是一个 instance 方法。调用使用
myMethod()等价于this.myMethod()。在作为实例方法的 myMethod() 内部,this存在:它是当前对象。在 static 方法 main() 内部,没有this。所以这个电话没有意义。
标签: java static static-methods non-static