Java内部类访问变量在另一个内部类
问题描述:
我的主类有2个内部类,其中1个是线程,我不知道我的内部类2如何访问(或如何知道var1是true或false)值内部类1,这是我的例子,谢谢!Java内部类访问变量在另一个内部类
public class InnerClass {
public class InnerClass1 implements NativeKeyListener {
public boolean var1;
}
public class InnerClass2 implements Runnable{
@Override
public void run() {
while (true) {
var1...
}
}
}
}
答
,除非你已经实例化对象,你不能访问非静态变量/方法/内部类(即created an instance of the object)。您需要一个InnerClass1
对象,然后才能存储或获取任何内容。在您执行类似InnerClass1 foo = new InnerClass1()
之前,任何地方都不会有var1
。
无论如何,我认为你在滥用内部类。我建议如果你还没有通过Java Tutorials Trail来了解类,字段和实例如何在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();
}
}
}
+0
如果您不想在接口NativeKeyListener上添加'a()'方法,那么使用'a()'方法创建一个新的'interface'并在InnerClass1上实现它。在这种情况下'NativeKeyListener i = InnerClass.m();'将成为'NewInterface i = InnerClass.m();' –
您需要InnerClass1'的'一个实例。 – shmosel
无论如何可以做到这一点! –
对不起,再来? – shmosel