Singletons Scala aninhados do código Java

Eu tenho o seguinte código Scala (2.8):

object A {
  val message = "hello"
  object B {
    val message = "world"
  }
}

E uma classe Java semelhante:

public class C {
  public static String message() {
    return "HELLO";
  }
  public static class D {
    public static String message() {
      return "WORLD";
    }
  }
}

Eles funcionam como eu esperaria quando os chamo de Scala:

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

Mas quando tento algo semelhante em Java, o compilador não gosta da segunda linha:

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());

Está claro por que esse é o caso quando olho os arquivos de classe comjavap. Eu sei que posso usar

System.out.println(A$B$.MODULE$.message());

em vez disso, ou adicione algo comoval getB = B para o meuA objeto e substitua a segunda linha por

System.out.println(A.getB().message());

Existe uma maneira padrão de usar objetos Scala singleton aninhados do código Java?

questionAnswers(2)

yourAnswerToTheQuestion