Mik*_*inn 26 java singleton scala maybe scala-java-interop
你怎么scala.None能从Java 访问?
最后一行导致编译器死于"类型scala.None不接受参数".
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>();
Run Code Online (Sandbox Code Playgroud)
这失败了"无法找到符号构造函数None()":
final Option<String> object2 = new None();
Run Code Online (Sandbox Code Playgroud)
这失败了"无法找到符号变量无":
final Option<String> object2 = None;
Run Code Online (Sandbox Code Playgroud)
在2007年,这曾经工作,但随后Scala改变了.Java编译器给出error: incompatible types:
final Option<String> object2 = scala.None$.MODULE$;
Run Code Online (Sandbox Code Playgroud)
om-*_*nom 34
这可能有效:
final scala.Option<String> x = scala.Option.apply(null);
Run Code Online (Sandbox Code Playgroud)
def apply [A](x:A):Option [A]
Option工厂,如果参数不为null,则创建Some(x),如果为null则创建None.
Dav*_*ten 16
使用Scala 2.10.2(不确定它何时出现的版本):
final Option<String> none = Option.empty();
Run Code Online (Sandbox Code Playgroud)
不要过分夸大它,但不应该依赖静态转发器,因为在某些情况下它们可能无法生成.例如,Some它的对象伴侣没有静态转发器.
访问对象伴随方法的当前方法是:
final scala.Option<String> x = scala.Option$.MODULE$.apply(null);
Run Code Online (Sandbox Code Playgroud)
Option$是对象伴侣的类Option.MODULE$是一个最终的公共静态字段,包含唯一的实例Option$(换句话说,对象伴随).