我有以下的斯卡拉(2.8)代碼:嵌套斯卡拉單身
object A {
val message = "hello"
object B {
val message = "world"
}
}
而且類似的Java類:
public class C {
public static String message() {
return "HELLO";
}
public static class D {
public static String message() {
return "WORLD";
}
}
}
,當我打電話給他們,我期望這些工作從斯卡拉:
scala> A.message
res0: java.lang.String = hello
scala> A.B.message
res1: java.lang.String = world
scala> C.message
res2: java.lang.String = HELLO
scala> C.D.message
res3: java.lang.String = WORLD
但是當我嘗試從Java類似的東西,編譯器不喜歡第二行:
System.out.println(A.message());
System.out.println(A.B.message()); // cannot find ... symbol : variable B ...
System.out.println(C.message());
System.out.println(C.D.message());
很明顯,爲什麼這是這種情況,當我看着類文件javap
。我知道我可以使用
System.out.println(A$B$.MODULE$.message());
替代,或添加類似val getB = B
我A
對象,並
System.out.println(A.getB().message());
更換第二行有沒有辦法使用Java代碼嵌套斯卡拉單一對象的標準方式?
嘛,一個'$ B $ .MODULE $'_is_是一種標準的方式,即使它不是一個特別好的標準方式。 – 2010-08-26 19:06:32