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

2022-08-31 04:53:33

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

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

这背后的原因是什么?我不关心解决方案,而是原因。

private java.util.List<String> someMethod(){
    /* Some Code */
    return someList;            
}

public static void main(String[] strArgs){          
     // The following statement causes the error. 
    java.util.List<String> someList = someMethod();         
}

答案 1

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


答案 2

您尝试调用的方法是实例级方法;您没有实例。

static方法属于类,非方法属于类的实例。static


推荐