Подтвердить что ты не робот

В Java мы можем разделить класс на несколько файлов

Любая возможность разделить класс на несколько физических файлов с помощью Java?

4b9b3361

Ответ 1

Нет, весь класс должен находиться в одном файле на Java.

Если вы думаете о функции "частичных типов" С#, в Java нет эквивалента. (Если вы не думали о С#, игнорируйте это:)

Ответ 2

Это может быть хорошей идеей, если класс действительно настолько велик, что внедренные концепции нелегко понять. Я вижу два разных способа сделать это:

  • Использовать наследование: Переместить общие понятия класса в базовый класс и извлечь из него специализированный класс.

  • Использование агрегации: Перемещение частей вашего класса в отдельный класс и установление отношения ко второму классу с использованием ссылки.

Как уже упоминалось ранее, в Java нет понятия, как частичные классы, поэтому вам действительно нужно использовать эти механизмы ООП.

Ответ 3

Используя только javac, это невозможно. Разумеется, вы могли бы объединить несколько файлов в один .java файл как часть процесса сборки и вызвать javac впоследствии, но это было бы громоздким на стольких уровнях, что вряд ли будет полезно.

Возможно, вы могли бы объяснить свою проблему, тогда мы можем помочь лучше.

Если вы чувствуете, что ваши .java файлы слишком велики, вам, вероятно, стоит подумать о рефакторинге.

Ответ 4

Конечно, это возможно, но я не считаю это полезным вообще.

Чтобы начать, деление на самом деле не вопрос, я думаю, вы просто скомпилируете файл и разделите его, какой бы вы ни хотели.

Теперь, чтобы собрать их обратно, все, что вам нужно сделать, это написать пользовательский загрузчик классов, который загружает все части, объединяет их в один байт-массив, а затем вызывает defineClass().

Как я уже сказал, это выглядит довольно бессмысленно и, вероятно, не то, что вы хотите, и определенно не то, что вам нужно, но это технически возможно.

(Я сделал что-то подобное однажды как шуточный способ обфускации кода: байты файла класса были рассеяны в константах всех других классов приложения. Было весело, я должен признать.)

Ответ 5

Нет, в Java этого не может быть сделано.

Ответ 6

Нет, вы не можете. Если ваш класс слишком велик, вы должны разделить его на два или более.