访问 scala。来自 Java 的无

如何从 Java 访问?scala.None

最后一行导致编译器以“类型 scala”死亡。“无”不采用参数”。

import scala.Option;
import scala.Some;
import scala.None;
final Option<String> object1 = new Some<String>("Hi there");
final Option<String> object2 = new None<String>();

这失败,并显示“找不到符号构造函数 None()”:

final Option<String> object2 = new None();

这失败,并显示“找不到符号变量 None”:

final Option<String> object2 = None;

在2007年,这曾经有效,但后来Scala改变了。Java编译器给出了:error: incompatible types

final Option<String> object2 = scala.None$.MODULE$;

答案 1

这可能有效:

final scala.Option<String> x = scala.Option.apply(null);

def apply [A] (x: A): Option[A]
一个选项工厂,如果参数不为 null,则创建 Some(x),如果参数为 null,则创建 None。


答案 2

使用 Scala 2.10.2(不确定这是在哪个版本中出现的):

final Option<String> none = Option.empty();

推荐