Error:java: 无法从静态上下文中引用非静态 变量 this
分析:
出现这种错误首先先分清什么是静态什么是非静态,它们之间的关系是什么?
静态方法中不能引用非静态变量
非静态方法中能引用静态变量
错误原因代码如下:
public class Demo {
public static void main(String[] args) {
Person person = new Person(); //定义一个Person类
}
/*把Person类放在Demo里面
报错 Error:java: 无法从静态上下文中引用非静态
变量 this
如果把Person类放在Demo外面可以正常运行*/
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
System.out.println(name + age);
}
}
}
总结:
在java中,没有static的变量或函数,如果想被调用的话,是要先新建一个对象才可以,非静态方法和变量只有在有实例化对象时才存在的。