使用" fine"访问内部类方法Java中的语法使用Scala class&宾语

时间:2016-02-29 20:38:31

标签: scala scala-java-interop

我有以下scala示例:

class Nested {}
object Nested {
  class Inner {}
  object Inner {
    def x = 321
  }
}

使用JUnit测试来专门测试我可以执行Nested.Inner.x()并在没有Nested.Inner$.MODULE$.x()的情况下自由调用该方法:

  import static junit.framework.Assert.*;
  import org.junit.Test;

  public class TestFromJava {

  @Test
  public void accessTest() {
    assertEquals(321, Nested.Inner.x());
  }
}

这是编译,但在运行测试的那一刻,我得到了(sbt test):

[error] TestFromJava.java:8: cannot find symbol
[error]   symbol:   method x()
[error]   location: class Nested.Inner
[error] Nested.Inner.x

如何从Scala语法中获益并且不使用可怕的$?也许它是语言的一个特征,就像它生成object个实例一样。

1 个答案:

答案 0 :(得分:0)

从Java调用时,您必须使用explained in this question来限定单例object访问权限。

在你的情况下

Nested.Inner$.MODULE$.x()