猿问

“非静态方法无法从静态上下文中引用”背后的原因是什么?

非常常见的初学者错误是当您尝试“静态”使用类属性而不创建该类的实例时。它会留下您提到的错误消息:

您可以将非静态方法设为静态,也可以使该类的实例使用其属性。

为什么?我不是要求解决方案。我很高兴知道它背后的原因是什么。核心原因!

private java.util.List<String> someMethod(){
    /* Some Code */
    return someList;            }public static void main(String[] strArgs){          
     // The following statement causes the error. You know why..
    java.util.List<String> someList = someMethod();         }


呼啦一阵风
浏览 855回答 4
4回答

紫衣仙女

你不能打电话给不存在的东西。由于尚未创建对象,因此尚不存在非静态方法。静态方法(根据定义)始终存在。

30秒到达战场

您尝试调用的方法是实例级方法;&nbsp;你没有实例。static方法属于类,非static方法属于类的实例。

郎朗坤

我刚刚意识到,我认为人们不应该很早就接触到“静态”的概念。静态方法应该是例外而不是常态。如果你想学习OOP,尤其是早期。(为什么从规则的例外开始?)这是Java的反教学法,你应该学习的“第一”东西是公共静态无效的主要东西。(很少有真正的Java应用程序有自己的主要方法。)
随时随地看视频慕课网APP

相关分类

Java
我要回答