#java #design-patterns #inner-classes
#java #шаблоны проектирования #внутренние классы
Вопрос:
без использования внутреннего класса
я хочу, чтобы только класс A имел право на новый класс B, но я не хочу использовать внутренний класс, поскольку в другом классе есть массив класса A, который я не могу изменить
Существует другой класс, содержащий ссылку на массив класса B, который вызовет ошибку, когда я изменяю класс B на InnerClass, поскольку пространство имен изменяется. я не могу изменить этот класс
Комментарии:
1. Частный внутренний класс — правильный способ сделать это. Почему вы не хотите использовать внутренний класс?
2. Я думаю, что «единственный» способ сделать это — с помощью внутреннего класса. Однако, если вы используете модификатор ‘friendly’ в своем конструкторе, вы могли бы создать фабрику в том же пакете, что и ваш класс, и использовать фабрику для создания экземпляров вашего класса.
3. Пожалуйста, опишите, почему вы хотите это сделать. Возможно, есть лучшее решение вашей проблемы.
Ответ №1:
Если классы A и B являются единственными классами в одном пакете, то создание конструктора пакета Class B private достигнет того, чего вы хотите.
Типичный способ контролировать построение — сделать конструктор B закрытым и добавить статический фабричный метод, возможно, тот, который принимает экземпляр A?
Изменение B на интерфейс и создание внутренних классов, которые реализуют B, является другим вариантом.