2010-12-16 2 views
4

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

ответ

18

Я думал, что Scala 2.7.2 представил joint compilation mode, чтобы сделать именно это?

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

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

+0

Спасибо, это именно то, что я хотел знать. Это только теоретический вопрос после лекции, в которой я был. – oshai 2010-12-16 18:28:22

1

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

Смежные вопросы