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

⌚Time: 2021-09-13 00:33:48

👨‍💻Author: Jack Ge

编辑以下代码:


public class t{

    public int i;

    public void fun(){}

    public static void main(String...args){

        i=3;

        fun();

    }

}

编译:


javac t.java

得到以下报错:

原因:

在main函数中对类内部成员变量和方法进行调用是错误的,main方法为静态方法,而java中静态成员方法中不能引用非静态方法和变量

解决方法:

方法一:在构造函数中调用非静态方法和成员变量


public class t{

    public int i;

    t(){

        i=3;

        fun();

    }

    public void fun(){}

    public static void main(String...args){

    }

}

方法二:main方法中new一个对象,直接使用对象调用成员方法和变量


public class t{

    public int i;

    public void fun(){}

    public static void main(String...args){

        t t1=new t();

        t1.i=3;

        t1.fun();

    }

}