如何解决:非静态变量,无法从静态上下文中引用它

时间:2019-09-28 06:48:28

标签: java

为什么我什至无法实例化对象?我很困惑我是否以错误的方式创建了对象?

class Main {

    public class Age {
        public int years = 1;

        public Age(int y) {
            years = y;
        }

        public void print() {
            System.out.println(years);
        }
    }

    public static void main(String[] args) {
        Age four = new Age(4); age = four;
        age.years++;
        four.print();
    }
}

1 个答案:

答案 0 :(得分:2)

您的嵌套类Age是非静态的,这意味着您需要一个主类的实例来引用Age。将Age定义为静态,或创建一个新的Main对象。

    public static void main(String[] args) {
        Age four = (new Main()). new Age(4); 
        Age age = four;
        age.years++;
        four.print();
    }

Java inner class and static nested class

编辑:

或者在Main而不是嵌套类之外声明它。