如何在Java代码中使用scala.None

Cra*_* B. 38 java singleton scala scala-java-interop

可能重复:
从Java访问scala.None

在Java中,您可以创建Some使用构造函数的实例,即new Some(value),但None没有合作伙伴类.你如何None从Java 传递给Scala函数?

Set*_*sue 56

scala.None$.MODULE$事情并不总是进行类型检查,比如这并不编译:

scala.Option<String> x = scala.None$.MODULE$;
Run Code Online (Sandbox Code Playgroud)

因为javac不知道Scala的声明站点方差,所以你得到:

J.java:3: incompatible types
found   : scala.None$
required: scala.Option<java.lang.String>
    scala.Option<String> x = scala.None$.MODULE$ ;
Run Code Online (Sandbox Code Playgroud)

但这确实可以编译:

scala.Option<String> x = scala.Option.apply(null);
Run Code Online (Sandbox Code Playgroud)

这是获得在更多情况下可用的无法的另一种方式.

  • 我甚至不得不写"scala.Option.apply((String)null)"来使编译器满意. (8认同)

Mit*_*ins 23

我认为这个丑陋的一点会起作用: scala.None$.MODULE$

不需要新的实例,因为一个None和另一个一样好......


Ran*_*ulz 11

您可以使用以下命令从java访问singleton None实例:

scala.None$.MODULE$
Run Code Online (Sandbox Code Playgroud)