當編譯下面的代碼片段:爲什麼Scala在方法名稱中有空格?
class MyTest {
@org.junit.Test
def `test test`() {
}
}
方法test test
被投入字節碼test$u0020test
。
爲什麼發生這種情況,以及如何禁用?
根據JVM規範,空間是方法名稱的有效標識符。此外,在Scala語言規範中沒有提到這種編碼。此外,其他JVM語言(如Groovy和基於Groovy的Spock Framework)不會對空格進行編碼。
爲什麼我需要這個:人性化的JUnit測試名稱和測試報告。
的Java 1.8.0_45,斯卡拉2.11.6
我想這是唯一的原因是一致性。他們可能不想特殊處理不是有效標識符的字符類。從技術上講,我也沒有看到必要的。 –
我確定你爲什麼期望在語言規範中找到它;它是*語言*的規範,而不是編譯器實現,對嗎? –