возможно ли иметь круговую зависимость между классами .java и .scala? - PullRequest
5 голосов
/ 16 декабря 2010

Допустим, у меня есть класс A, определенный в файле .java, и класс B, определенный в файле .scala.
класс A использует класс B, а класс B использует класс A.
Если я использую Java-компилятор, у меня будет ошибка компиляции, потому что класс B еще не скомпилирован. Если я использую компилятор scala, класс A не будет найден. Есть ли компилятор, который может компилировать оба вместе?

Ответы [ 2 ]

18 голосов
/ 16 декабря 2010

Я думал, что в Scala 2.7.2 введен режим совместной компиляции , чтобы сделать именно это?

Какую версию scalac вы используете, и работает ли она с отключенным этим режимом?

Edit: подождите секунду, когда вы скажете, что scalac приводит к тому, что класс A не найден - вы поняли, что вам все еще нужно скомпилировать чистые файлы Java с javac впоследствии?Режим совместной компиляции Scalac на самом деле не выдает *.class вывод для файлов Java, а просто компилирует классы Scala по их сигнатурам.Следовательно, вам все еще нужно скомпилировать файлы Java впоследствии, хотя это не должно быть проблемой для javac теперь, когда классы Scala были скомпилированы.

1 голос
/ 05 июня 2012

Создать поддельный класс B на Java.Объявите там только члены, на которые ссылаются из A. Тела методов могут быть пустыми.Скомпилируйте A.java и B.java вместе.Затем выбросьте B.class и скомпилируйте B.scala.

...