0
我有以下阶例如:访问内部类方法在Java“细”的语法使用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
实例。
你所说的“这编译”意思?这是你显示的运行时错误吗?看起来你正在使用sbt。你是否成功运行'sbt test:compile'?我认为你几乎需要通过'Nested.Inner $ .MODULE $ .x()'来访问这个符号。' –
编译'sbt clean compile'的意义成功了。 –
但是'TestFromJava'在哪里,是主要来源还是测试来源?是在'src/main/java'还是'src/test/java'(假设你有一个构建 - 你能证实这一点?)。 'compile'不编译测试源,它是'compile:compile'的缩写。你需要运行'test:compile'。 –