另一个内部类中的Java内部类访问变量
我的主类有2个内部类,其中1个是线程,我不知道我的内部类2如何访问(或者如何知道var1是真是假)内部类1的值,这是我的示例,谢谢另一个内部类中的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
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
的实例。无论如何都可以!很抱歉,再来一次?为什么要从这两个内部类开始呢?这没有多大意义,你确定你没有混淆什么东西吗?如果你不想在interfaceNativeKeyListener
上添加方法a()
,那么就用a()这样的方法定义创建一个新的interface
并在InnerClass1
上实现它。在这种情况下,NativeKeyListener i=InnerClass.m()代码>将变成NewInterface i=InnerClass.m()代码>