.java 和 .scala 类之间是否可能存在循环依赖?

问题描述 投票:0回答:2

假设我在 .java 文件中定义了类 A,在 .scala 文件中定义了类 B。
A 类使用 B 类,B 类使用 A 类。
如果我使用 java 编译器,则会出现编译错误,因为 B 类尚未编译。如果我使用scala编译器A类将找不到。有没有可以同时编译两者的编译器?

java scala scala-java-interop
2个回答
18
投票

我以为 Scala 2.7.2 引入了联合编译模式就是为了做到这一点?

您使用的是哪个版本的

scalac
?它是否在禁用此模式的情况下运行?

编辑:等一下,当你说 scalac 导致 A 类找不到时 - 你是否意识到你之后仍然需要用

javac
编译纯 Java 文件? Scalac 的联合编译模式实际上并不为 Java 文件生成
*.class
输出,只是根据 Scala 类的签名来编译它们。 因此,之后您仍然需要编译 Java 文件,不过既然 Scala 类已经编译好了,这对于
javac
来说应该不是问题。


1
投票

用 Java 创建假的 B 类。只声明从 A 引用的成员。方法体可以为空。 将A.java和B.java一起编译。然后扔掉B.class并编译B.scala。

© www.soinside.com 2019 - 2024. All rights reserved.