修复无法对非静态方法进行静态引用

时间:2020-02-23 14:34:13  来源:igfitidea点击:

在本教程中,我们将看到如何解决无法对非静态方法进行静态引用 (cannot make static reference to non-static method.)。

让我们在举例的帮助下了解此错误。

package org.igi.theitroad;
 
public class JavaHelloWorld {
	
	public static void main(String args[])
	{
		sayHello();
	}
	
	public void sayHello()
	{
		System.out.println("Hello world from theitroad");
	}
}

上面的程序无法编译,我们将获得下面的编译错误。

cannot make static reference to non-static method sayHello from the type JavaHelloWorld

为什么会收到这个错误?

答案很简单。
你不能调用给不存在的东西。
由于我们没有创造一个对象 JavaHelloWorld,非静态方法 sayHello()尚不存在

现在你可以用两种方式解决这个问题。

声明Sayhello方法静态

我们可以声明Sayhello()方法静态和编译器不会再抱怨。

package org.igi.theitroad;
 
public class JavaHelloWorld {
	
	public static void main(String args[])
	{
		sayHello();
	}
	
	public static void sayHello()
	{
		System.out.println("Hello world");
	}
}

输出:

Hello world

从javahelworlld对象调用sayhello()

我们可以创建一个对象 JavaHelloWorld类和呼叫 sayHello()从中。

package org.igi.theitroad;
 
public class JavaHelloWorld {
	
	public static void main(String args[])
	{
		JavaHelloWorld jhw=new JavaHelloWorld();
		jhw.sayHello();
	}
	
	public void sayHello()
	{
		System.out.println("Hello world");
	}
}