Внутренний класс в отдельный файл .java
Если вынести код внутреннего класса в другой файл, то это уже будет обычный Java-класс, не более...
А можно поинтересоваться, зачем?
Если нужен отдельный файл, то и используйте самостоятельный класс.
Можно, конечно, обманывать себя: создать новый класс, обращаться к внутреннему классу, а оттуда делегировать все запросы к своему новому классу, но вот зачем? =)
А создавать отдельный класс - эт конечно можно, но главный и внутренний начинают агрегировать друг друга и выглядит это некрасиво.
Гигабайтов 8 небось?:D
Я тоже о таком думал. Но если речь идет не о статических подклассах всеровно придется делать явную агрегацыю главного класа в подкласы. Можно для подкласов создать общего родителя в котором и сделать агрегацыю. Также придется явно прописывать геттеры, сеттеры с правом доступа на уровне пекеджа для доступа к приватным полям если такое необходимо. Одним словом красиво всеровно не получится. Стоит ли игра свеч ?
Тем более я понимаю что код уже написан и вносить в него кучу изменений там где раньше за нас трудился компилятор наверно неохота.
Все зависит от того - будет ли код еще изменяться или расширяться и насколько часто и широко... Агрегировать не обязательно - все зависит от складности внутренних классов - если там 1-2 метода, то тогда можно и делегировать.
Все относительно в каждой конкретной ситуации и может изменяться по ходу действий и не раз...
Внимание! Правильный ответ!
Нужно выносить класс и агрегировать внешний! Потому что Java так делает.
При компиляции внутренний класс становится обычным классом с неявной ссылкой на внешний.
Внимание! Правильный ответ!
Нужно выносить класс и агрегировать внешний! Потому что Java так делает.
При компиляции внутренний класс становится обычным классом с неявной ссылкой на внешний.
Ну ето не новость, я же говорил что много за нас делает компилятор. Только вот одной ссылки на внешний класс мало. Пачитай как внутренний обращается к приватным полям внешнего класса.
не все проблемы, конечно, решит, но многие
не все проблемы, конечно, решит, но многие[/QUOTE]
Ну и какой же паттерн предлагаете забубенить?
Мне ж наоборот надо, чтоб структура и функциональность остались.
Имхо, они хороши бывают или как скрытные реализации (скрытые внутри какой-то библиотеки) public interface, я говорю про обычные статические внутренние классы, либо как _маленькие_ in-place listeners.
Сделайте нормальный классы с паттерном low coupling / high cohesion ;).
Многие мощные и популярные паттерны используют cross-reference. Visotor, for instance...
Ну и при чем тут пакеты ? Какраз рознести внутренние классы по пакетах - только усложнить себе жызнь и наделать дыр в интерфейсах.
Резон использования внутренних классов описан даж в любой более-менее нормальной литературе. Взять к примеру выкладку из Java Tutorials ->
There are several compelling reasons for using nested classes, among them:
It is a way of logically grouping classes that are only used in one place.
It increases encapsulation.
Nested classes can lead to more readable and maintainable code."
Внутренние классы хороши, когда вы понимаете зачем они вам и зачем их можно и нужно использовать.
Разбиение на пакеджи строится на основе логики приложения, причем тут разнесение внутренних классов????