Java - конструктор внутреннего класса - допускается только для внешнего класса

У меня есть внутренний класс в моем коде. Я хочу предоставить открытый доступ к его экземплярам, ​​но только внешний класс должен иметь возможность создавать эти экземпляры, например, в "private" доступе. Возможно ли это, если не сделать должным образом небольшой пакет (или создать открытый интерфейс для каждого такого внутреннего класса)?

(Извините, если мой английский плохой: P)

Ответ 1

Это возможно. Объявите общедоступный класс , но его конструктор закрыт. Таким образом, вы можете создать его только внутри вашего окружающего класса и самого себя, но не извне.

Ответ 2

По умолчанию Если вы хотите получить экземпляр внутреннего класса, вам нужно сначала использовать класс Outer.

A внутренний класс является членом его охватывающего класса.

Вам не нужно ничего делать.

Нестатические вложенные классы (внутренние классы) имеют доступ к другим членам охватывающего класса, даже если они объявлены частными

Надеюсь, я правильно понял ваш вопрос.

Пожалуйста, обратитесь.

Ответ 3

Итак, сделайте private внутреннего класса.

public class Outer {
    private class Inner {}
        public String foo() {
            return new Inner().toString(); 
        }
}

вы не можете юридически вызвать частный конструктор по умолчанию, потому что он является частным