无法从静态上下文引用非静态方法

时间:2015-05-12 17:54:42

标签: java

Java新手,试图弄清楚如何解决这个问题。

        boolean myBool = G(A,n,m,0);

出于某种原因,它不喜欢这条线。为什么不让我称之为这个简单的功能? main()和G()都是C()的一部分。

2 个答案:

答案 0 :(得分:0)

非静态方法属于类的特定实例,而静态方法属于类本身。在main内部,这是一个静态方法,如果没有特定的对象来运行它们,则无法引用非静态方法。 E.g:

boolean myBool = new C().G(A,n,m,0);

但是,如果类没有有趣的状态,或者它的状态不影响方法G,则应将G定义为static

答案 1 :(得分:0)

可能是因为您未在static方法的定义中包含G()

Main()是一个静态方法,由于static事情在非静态事物之前运行,静态事物只能调用/使用static事物。

请注意,您的Main()不需要您制作C个对象。它是程序的入口点,如果你必须先创建一个对象来运行你的程序就没有意义 - 你从哪里制作那个对象?

如果要进行非静态调用,请创建相应类的对象。