当前位置: 代码迷 >> J2SE >> non-static variable n cannot be referenced from a static context,该如何解决
  详细解决方案

non-static variable n cannot be referenced from a static context,该如何解决

热度:680   发布时间:2016-04-23 22:31:34.0
non-static variable n cannot be referenced from a static context
class Num{
    private int i=0;
    public void add(){i++;System.out.println("i="+i);}
    public Num(){} 
}
class Ber{
    private Num n;
    public Ber(Num n){
        this.n=n;
        this.n.add();
    }
}
public class Test {
    Num n=new Num();
    public static void main(String[] args){        
        for(int i=0;i<3;i++){
        Ber b=new Ber(n);
        }
    }
}

红色那行出现错误:non-static variable n cannot be referenced from a static context
找不到原因啊,哪位大神帮帮忙!!!

------解决方案--------------------
静态方法中不能调用非静态成员或方法,jvm加载顺序,静态优先。
修改为:

class Num{
    private int i=0;
    public void add(){i++;System.out.println("i="+i);}
    public Num(){} 
}
class Ber{
    private Num n;
    public Ber(Num n){
        this.n=n;
        this.n.add();
    }
}
public class Test {
    
    public static void main(String[] args){   
        Num n=new Num();
        for(int i=0;i<3;i++){
        Ber b=new Ber(n);
        }
    }
}

  相关解决方案