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

另一个内部类中的Java内部类访问变量,java,class,Java,Class,我的主类有2个内部类,其中1个是线程,我不知道我的内部类2如何访问(或者如何知道var1是真是假)内部类1的值,这是我的示例,谢谢 public class InnerClass { public class InnerClass1 implements NativeKeyListener { public boolean var1; } public class InnerClass2 implements Runnable{ @O

我的主类有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...
            }
        }

    }
}

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


无论如何,我认为你误用了内部类。我建议,如果您还没有深入了解Java中的类、字段和实例化是如何工作的,您可以通过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();
    }

}

}

您需要一个
InnerClass1
的实例。无论如何都可以!很抱歉,再来一次?为什么要从这两个内部类开始呢?这没有多大意义,你确定你没有混淆什么东西吗?如果你不想在interface
NativeKeyListener
上添加方法
a()
,那么就用
a()这样的方法定义创建一个新的
interface
并在
InnerClass1
上实现它。在这种情况下,
NativeKeyListener i=InnerClass.m()将变成
NewInterface i=InnerClass.m()