Eclipse Java中的Scala对象嵌套类

时间:2012-04-18 10:04:14

标签: java scala eclipse-jdt scala-java-interop

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

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

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的问题还是我使用它的方式?

1 个答案:

答案 0 :(得分:1)

无法从Java访问深层嵌套对象。无论是Eclipse,命令行还是任何构建工具。字节码转换丢失了嵌套信息。

Eclipse不允许您使用$名称,因此会抱怨。如果你关心Java互操作,你应该坚持使用类似Java的Scala。顶级类,纯粹特征或抽象类,没有高阶方法等。