Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java代码中的嵌套Scala单例_Java_Scala - Fatal编程技术网

Java代码中的嵌套Scala单例

Java代码中的嵌套Scala单例,java,scala,Java,Scala,我有以下Scala(2.8)代码: 和一个类似的Java类: public class C { public static String message() { return "HELLO"; } public static class D { public static String message() { return "WORLD"; } } } 当我从Scala中调用它们时,它们可以正常工作: scala> A.message

我有以下Scala(2.8)代码:

和一个类似的Java类:

public class C {
  public static String message() {
    return "HELLO";
  }
  public static class D {
    public static String message() {
      return "WORLD";
    }
  }
}
当我从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
但是,当我尝试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代码中的嵌套Scala单例对象?

我对Scala知之甚少,但考虑到这一点,我认为您已经公开了仅有的两个选项。

嗯,
a$B$.MODULE$
是一种标准方法,即使它不是一种特别好的标准方法。
System.out.println(A.getB().message());