【问题标题】:How to instantiate multiple nested non-static inner classes - java如何实例化多个嵌套的非静态内部类 - java
【发布时间】:2015-04-09 05:21:15
【问题描述】:

我有以下代码:

public class InnerClassStuff {
   public class A{
       public class AA{}
    }
}

我的问题是如何实例化一个 AA 对象?

我尝试了以下方法,但无法编译:

public static void main(String[] args){
   InnerClassStuff object = new InnerClassStuff();
   A a = object.new A();
   AA aa = object.a.new AA(); //error
}

【问题讨论】:

    标签: java inner-classes non-static


    【解决方案1】:

    要实例化内部类,必须先实例化外部类。所以,你不能声明A a= ..,你需要用如下外部类包裹它:

    InnerClassStuff object = new InnerClassStuff();
    InnerClassStuff.A.AA a = object.new A().new AA();
    

    或者,

    InnerClassStuff object = new InnerClassStuff();
    InnerClassStuff.A a = object.new A();
    InnerClassStuff.A.AA aa = a.new AA();
    

    【讨论】:

    • 或者将原代码的最后一行替换为AA aa = a.new AA();
    • 我尝试使用 AA aa = a.new AA();但它给了我一个错误,说“AA无法解析为一种类型”。顺便说一句,我正在使用eclipse。
    • @JerryJia,你不能直接使用 Inner 类。你应该用外部类包装它。
    【解决方案2】:

    要访问你必须使用外部类名的类,只有这样你才能拥有内部类的引用变量。例如:

    InnerClassStuff object = new InnerClassStuff();
    InnerClassStuff.A a = object.new A();
    InnerClassStuff.A.AA aa = a.new AA();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-23
      • 2010-09-09
      • 2013-08-20
      • 1970-01-01
      相关资源
      最近更新 更多