Как создать массив класса-члена в Java

У меня есть класс с именем 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 ответ

Решение

Невозможно создать объект внутреннего класса, если у нас уже нет объекта внешнего класса. Это потому, что объект внутреннего класса тихо связан с объектом внешнего класса, из которого он был сделан. Однако, если вы создаете вложенный класс (статический внутренний класс), тогда ему не нужна ссылка на объект внешнего класса.

Тем не менее, это не так при создании массива внутреннего класса. Мы не можем использовать 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];
Другие вопросы по тегам