另一个内部类中的Java内部类访问变量

时间:2017-10-19 03:14:06

标签: java class

我的主类有2个内部类,其中1个是线程,我不知道我的内部类2如何访问(或者如何知道var1是真还是假)内部类1的值,这是我的例子,谢谢!

public class InnerClass  {
    public class InnerClass1 implements NativeKeyListener {
        public boolean var1;
    }

    public class InnerClass2 implements Runnable{

        @Override
        public void run() {
            while (true) {
                var1...
            }
        }

    }
}

2 个答案:

答案 0 :(得分:0)

除非已实例化对象(即created an instance of the object),否则无法访问非静态变量/方法/内部类。您需要一个InnerClass1对象才能存储或获取任何内容。在您执行InnerClass1 foo = new InnerClass1()之类的操作之前,任何地方都没有var1

无论如何,我认为你在滥用内部课程。我建议你是否还没有通过Java Tutorials Trail来了解类,字段和实例化如何在Java中工作。

答案 1 :(得分:0)

您可以通过innerclass1实现的接口或类来完成。试试这个:

public interface NativeKeyListener {
boolean a();
}

public class InnerClass {

static NativeKeyListener m() {
    class InnerClass1 implements NativeKeyListener {
        public boolean var1;

        public boolean a() {
            return var1;
        }
    }
    return new InnerClass1();
}

public class InnerClass2 implements Runnable {

    public void run() {
        NativeKeyListener i = InnerClass.m();
        i.a();
    }

}

}