Java: компилировать взаимосвязанные классы - PullRequest
0 голосов
/ 26 апреля 2011

Скажи, что у меня есть: class A зависит от class B зависит от class C зависит от class A.

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

Есть ли способ написать такое приложение, которое будет компилироваться без помех?

Ответы [ 3 ]

6 голосов
/ 26 апреля 2011

У нас есть несколько таких циклов зависимостей в нашей унаследованной кодовой базе, и они компилируются без помех.

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

1 голос
/ 26 апреля 2011

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

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

0 голосов
/ 26 апреля 2011

Вы можете иметь такую ​​циклическую зависимость, как эта, поскольку Java знает, какие файлы нужно прочитать, чтобы найти код по названию.то есть он компилирует их все сразу.У вас будет проблема только в том случае, если вы попытаетесь скомпилировать по одному за раз.

...