【问题标题】:Unable to create array of inner class [duplicate]无法创建内部类数组[重复]
【发布时间】:2025-12-11 18:00:01
【问题描述】:

我是java初学者。我想在外部类以外的类中创建内部类数组。但我不能因为编译器显示错误'('预期。 帮助。

Tree test = new Tree();
Tree.Node[] A = test.new Node[10];

错误

Tree.java:72: error: '(' expected
Tree.Node[] A = test.new Node[10];
                         ^
1 error

【问题讨论】:

    标签: java arrays inner-classes


    【解决方案1】:

    当您创建一个数组时,您不会创建元素类型的实例,您只需创建一个包含 null 引用的数组,因此您可以像创建任何数组一样创建它(不管元素类型是内部类) :

    Tree.Node[] A = new Tree.Node[10];
    

    当你初始化数组的一个元素时,你创建了一个内部类的实例,它需要一个封闭的类实例:

    A[0] = test.new Node ();
    

    【讨论】:

      【解决方案2】:

      此代码行:

      Tree.Node[] A = test.new Node[10];
      

      无效,您可能对仅创建实例的语法感到困惑

      Tree.Node fooA = test.new Node();
      

      你要做的事情必须写成:

      Tree.Node[] A = new Tree.Node[10];
      

      这是在java中声明内部类数组的正确方法

      【讨论】: