为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

呼啦一阵风 2019-05-25 15:12:13
非常常见的初学者错误是当您尝试“静态”使用类属性而不创建该类的实例时。它会留下您提到的错误消息:您可以将非静态方法设为静态,也可以使该类的实例使用其属性。为什么?我不是要求解决方案。我很高兴知道它背后的原因是什么。核心原因!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();         }
查看完整描述

4 回答

?
紫衣仙女

TA贡献1839条经验 获得超15个赞

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


查看完整回答
反对 回复 2019-05-25
?
30秒到达战场

TA贡献1828条经验 获得超6个赞

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

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


查看完整回答
反对 回复 2019-05-25
?
郎朗坤

TA贡献1921条经验 获得超9个赞

我刚刚意识到,我认为人们不应该很早就接触到“静态”的概念。

静态方法应该是例外而不是常态。如果你想学习OOP,尤其是早期。(为什么从规则的例外开始?)这是Java的反教学法,你应该学习的“第一”东西是公共静态无效的主要东西。(很少有真正的Java应用程序有自己的主要方法。)


查看完整回答
反对 回复 2019-05-25
  • 4 回答
  • 0 关注
  • 854 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信