如何在java中实例化成员类的数组

时间:2013-11-20 22:04:50

标签: java arrays inner-classes

我有一个叫做MultiplePrintableInvoiceData的类,这个类有一个内部类,它是一个名为Product的成员类。

我可以使用以下代码在另一个类中实例化Product实例:

MultiplePrintableInvoiceData pid = new MultiplePrintableInvoiceData();
MultiplePrintableInvoiceData.Product product = pid.new Product();

但是当我尝试使用以下代码实例化Product数组时:

MultiplePrintableInvoiceData.Product[] product = pid.new Product[];

我收到编译错误:“(”预期 - 表达非法开始。请我帮忙。

更新 我已将代码修改为:

MultiplePrintableInvoiceData.Product[] product = pid.new Product[11];

但它仍然给我一个错误!

1 个答案:

答案 0 :(得分:3)

除非我们已有一个对象,否则无法创建内部类的对象 外部类。这是因为 inner 类的对象安静地连接到它所构成的外部类的对象。但是,如果您创建一个嵌套类( static 内部类),则它不需要对外部类对象的引用。

但是,创建内部类的数组时并非如此。在创建内部类的Array时,我们不能使用外部类的Object来引用内部类。因为,我们没有创建任何内部对象。我们只创建一个数组,它只是放置内部对象的地方。它不需要属于任何外部对象。

  class Outer
  {
      class Inner
      {
        // field declaration and other code
      }
  }
  //...........
  Outer outerObj = new Outer();
  Outer.Inner innerObj = outerObj.new Inner(); // instance creation of inner class

  Outer.Inner[] innrArr = new Outer.Inner[5]; // array creation of inner class

根据您的具体情况,您需要:

MultiplePrintableInvoiceData.Product[] product = new MultiplePrintableInvoiceData.Product[10];