Что означает имяКласса.new Класс();

Я знаю что new используется для создания объекта, но что происходит, когда пишут имяКласса.new Класс(); ?


Ответы (1 шт):

Автор решения: Алексей Шиманский

В принципе, тоже для для создания экземпляра, но уже внутренних не статичных классов. Пример:

public class Outer {
    public class Inner { 
        public void foo() { ... } 
    }
}

Здесь класс Inner является внутренним для класса Outer. В итоге, например, чтобы вызвать метод foo у внутреннего класса, можно написать так:

Outer outer = new Outer();
outer.new Inner().foo();

или даже

new Outer().new Inner().foo();

Но в целом Class.new Class это создание экземпляра внутреннего класса "на лету".


А если внутренний класс статический, то в этом случае как его вызывать

Получается так:

public class Outer {
    public static class Inner {
        public void foo() { 
            System.out.println("Foo"); 
        }
    }
}

new Outer.Inner().foo();
→ Ссылка