Verschachtelte Scala-Singletons aus Java-Code
Ich habe den folgenden Scala (2.8) Code:
object A {
val message = "hello"
object B {
val message = "world"
}
}
Und eine ähnliche Java-Klasse:
public class C {
public static String message() {
return "HELLO";
}
public static class D {
public static String message() {
return "WORLD";
}
}
}
Diese Arbeit funktioniert wie erwartet, wenn ich sie von Scala aus anrufe:
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
Aber wenn ich etwas Ähnliches aus Java versuche, mag der Compiler die zweite Zeile nicht:
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());
Es ist klar, warum dies der Fall ist, wenn ich mir die Klassendateien mit @ ansehjavap
. Ich weiß, dass ich @ verwenden ka
System.out.println(A$B$.MODULE$.message());
instead, oder füge so etwas wie @ hinval getB = B
zu meinemA
object und ersetze die zweite Zeile mit
System.out.println(A.getB().message());
Gibt es eine Standardmethode, um verschachtelte Scala-Singleton-Objekte aus Java-Code zu verwenden?