非静态方法不能从静态上下文中引用

时间:2012-11-23 16:07:01

标签: java

每当我尝试在main中调用一个方法时,它就会给出错误

  

非静态方法不能从静态上下文引用

我尝试在main中创建对象并将它们作为参数发送到方法,但它也不起作用。

4 个答案:

答案 0 :(得分:3)

public class Foo {
    public static void main(String[] args) {
        Foo foo = new Foo();
        foo.print();
    }
    public void print() {
        System.out.println("Hello");
    }   
}

答案 1 :(得分:1)

您需要从静态方法 访问(调用)非静态方法 您的类实例。非静态方法或实例方法仅限于一个类的失效。

以下是描述它的简单示例:

class Test {
public void nonStaticMethod() {
}
public static void main(String[] args) {
Test t = new Test(); //you need to create an instance of class Test to access non-static methods from static metho
t.nonStaticMethod();
}

}

答案 2 :(得分:1)

main是一种静态方法。 public static void main(String[] args)

从静态方法或块中可以访问任何其他静态方法以及静态实例。如果您要访问非静态方法或实例,则必须通过引用创建对象和访问。

public class Test{
    public static void main(String[] args){
        print();// static method call
        Test test = new Test();
        test.print();// non static method call
    }
    public void print() {
        System.out.println("Hello non static");
    }
    public static void print() {
        System.out.println("Hello static");
    }
}

答案 3 :(得分:0)

创建对象时会实例化常规方法,但static方法不需要这样做。当你在static方法中时,不能保证非静态方法已被实例化(即可能没有创建Object),因此编译器不允许它。