4

使用 Eclipse IDE 时,我无法从 Java 代码中引用 Scala 类。有问题的 Scala 类嵌套在 Scala 对象结构中。当尝试在 Java 代码中使用该类时,Eclipse 抱怨使用二进制名称。

下面是定义感兴趣的类 ( ) 的 Scala 代码示例Inner

package mypackage;

object Outer {
  object Middle {
    class Inner {
      def msg() {
        println("Running");
      }
    }
  }
}

要在 Java 代码中使用该类Inner,我使用以下代码:

mypackage.Outer$Middle$Inner inner = new mypackage.Outer$Middle$Inner();
inner.msg();

但是,Eclipse (Indigo) 编译器在第一行抱怨以下消息:

嵌套类型 mypackage.Outer$Middle$Inner 无法使用其二进制名称引用

有趣的是,上面的 Java 代码在与 NetBeans 6.9.1 一起使用时有效。

这是 Eclipse 编译器的问题吗?是否有任何标志允许使用二进制名称?或者,或者,这是 Scala 的问题还是我使用它的方式?

4

1 回答 1

1

无法从 Java 访问深度嵌套的对象。既不来自 Eclipse,也不来自命令行或任何构建工具。字节码翻译会丢失嵌套信息。

Eclipse 不允许你使用$名字,所以它会报错。如果您关心 Java 互操作,则应该在边界处坚持使用类似 Java 的 Scala。顶级类,纯特征或抽象类,没有高阶方法等。

于 2012-04-20T12:59:11.263 回答