Ошибка при создании объекта для внутреннего класса (класс во вложенном классе) - PullRequest
1 голос
/ 19 марта 2019

Это код, который я пытаюсь; Я получаю сообщение об ошибке " external.inner1.inner2 innerobj2 = outerobj.new inner2 (); ".

Может ли кто-нибудь подтвердить, в чем заключается ошибка и синтаксис создания объекта для методов вложенного класса?

class outer {

  public void outerDisplay() { 
    System.out.println("Statement from outer class");
  }

  class inner {
    public void innerDisplay() {
        System.out.println("Statement from inner class");   
    }
  }

  class inner1 {
    public void inner1Display() {
        System.out.println("Statement from inner1 class");
    }

    class inner2 {
        public void inner2Display() {
            System.out.println("Statement from inner2 class");  
        }
    }
  }
}


public class InnerOuter {

  public static void main(String[] args) {
    outer outerobj=new outer();
    outerobj.outerDisplay();

    outer.inner innerobj=outerobj.new inner();
    innerobj.innerDisplay();

    outer.inner1 innerobj1=outerobj.new inner1();
    innerobj1.inner1Display();

    **outer.inner1.inner2 innerobj2= outerobj.new inner2()**;
    innerobj2.inner2Display();      
  }
}

1 Ответ

2 голосов
/ 19 марта 2019

Класс inner2 является внутренним классом для inner1, а не для outer. Таким образом, чтобы создать экземпляр inner2, вам нужен экземпляр inner1, например:

outer.inner1.inner2 innerobj2= innerobj1.new inner2();

или

outer.inner1.inner2 innerobj2= outerobj.new inner1().new inner2();
...