初学java的时候遇到这样一个bug: 错误: 无法从静态上下文中引用非静态 变量 this
代码主要功能是定义了一个Person测试类,然后在main方法里调用,不多bb,上代码:
public static void main(String[] args) {
Person per1 = new Person("hardy", 20);
per1.getInfo();
}
class Person{
String name;
int age;
Person(String name, int age){
this.name = name;
this.age = age;
}
void getInfo(){
System.out.println("name: "+name+"; age: "+age);
}
}
百度一下,找到这篇博客 https://blog.csdn.net/qq_3374...
但是该博客中出现的问题与我所遇到的不太一样。我的解决办法是在Person类前面加static,这样也能消除bug。
引用上述博客中的总结:
关于这个问题是因为大家没有理解和记住这句话:静态方法中不能引用非静态变量!
我们知道 静态方法可以通过所在类直接调用而不需要实例化对象,非静态成员变量则是一个对象的属性。它只有在有实例化对象时才存在的,所以在静态方法中是不可以调用非静态变量的!如果发生调用,则编译器会报出如上的错误。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。