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

时间:2010-12-16 18:20:06

标签: java scala compiler-construction scala-java-interop

假设我在.java文件中定义了A类,在.scala文件中定义了B类 A类使用B类,B类使用A类 如果我使用java编译器,我将遇到编译错误,因为B类尚未编译。如果我使用scala编译器,则不会找到类A.是否有可以一起编译的编译器?

2 个答案:

答案 0 :(得分:18)

我认为Scala 2.7.2引入了joint compilation mode来做到这一点吗?

您使用的是scalac的哪个版本,是否在禁用此模式的情况下运行?

编辑:等一下,当你说scalac导致无法找到A类时 - 你是否意识到你仍需要用javac编译纯Java文件? Scalac的联合编译模式实际上不会为Java文件生成*.class输出,只是根据其签名编译Scala类。因此,您仍然需要在之后编译Java文件,尽管现在已经编译了Scala类,这对于javac来说应该不是问题。

答案 1 :(得分:1)

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