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'。 –