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?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage