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

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

Комментарии к вопросу (11)
Решение

Нет, весь класс должен быть в одном файле в Java.

Если вы'вновь думать о C#и#39;ы с "частичным видах на" тут's нет эквивалент в Java. (Если вы были'т думаю на C#, это игнорировать :)

Комментарии (2)

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

  1. Использовать наследование: переход общие понятия класса, базовый класс и производные специализированный класс от него.

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

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

Комментарии (0)

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

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

Если вы считаете, что ваш .Java-файлы являются слишком большими, вы, вероятно, следует рассмотреть возможность рефакторинга.

Комментарии (0)

Да, Вы Можете!

Ради завершения:

Начиная с Java 8, Вы имеете понятие методов по умолчанию.

вы можете разбить класс на несколько файлов/подклассы нежно АБиспользование интерфейсов

наблюдать:

MyClassPartA.java

interface MyClassPartA{
    public default int myMethodA(){return 1;}
}

MyClassPartB.java

interface MyClassPartB{
    public default String myMethodB(){return "B";}
}

и объединить их:

MyClass.java

public class MyClass implements MyClassPartA, MyClassPartB{}

и использовать их:

MyClass myClass = new MyClass();

System.out.println(myClass.myMethodA());
System.out.println(myClass.myMethodB());

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

Комментарии (1)

Конечно, это возможно, но я не'т думаю, что это's, удобен вообще.

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

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

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

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

Комментарии (0)

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

Комментарии (0)

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

Комментарии (7)