Java 中的 Scala Option.orElse

Mik*_*inn 5 java scala

与我之前的问题相同的想法,只是更高级一点。我想用 Java 编写以下 Scala 代码:

Option(System.getProperty("not.present")).orElse(Some("default")).get
Run Code Online (Sandbox Code Playgroud)

我试过这个:

    final Function0<Option<String>> elseOption = new Function0<Option<String>>() { 
        @Override public Option<String> apply() { 
            return new Some<String>("default"); 
        }
    };

    final Option<String> notPresent =
        new Some<String>(System.getProperty("not.present")).
        orElse(elseOption).get();
Run Code Online (Sandbox Code Playgroud)

但我得到:

<anonymous OptionDemo$1> is not abstract and does not override abstract method apply$mcD$sp() in scala.Function0
[error]       orElse(new Function0<Option<String>>() {
Run Code Online (Sandbox Code Playgroud)

Dan*_*ral 2

扩展AbstractFunction0而不是Function0. 这应该为您提供特征提供的方法。