2017-10-19 149 views
-1

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

    } 
} 
+3

您需要InnerClass1'的'一个实例。 – shmosel

+0

无论如何可以做到这一点! –

+0

对不起,再来? – shmosel

回答

0

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

无论如何,我认为你在滥用内部类。我建议如果你还没有通过Java Tutorials Trail来了解类,字段和实例如何在Java中工作的基本概念。

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(); 
    } 

} 

}

+0

如果您不想在接口NativeKeyListener上添加'a()'方法,那么使用'a()'方法创建一个新的'interface'并在InnerClass1上实现它。在这种情况下'NativeKeyListener i = InnerClass.m();'将成为'NewInterface i = InnerClass.m();' –