Java Null的隐式包装
发布时间:2020-05-24 23:37:36 所属栏目:Java 来源:互联网
导读:我需要从 Scala访问大量 Java接口.这些接口有可能返回Null的方法,我想将它们转换为Option [T] 我找到了像这样描述Option.apply()的其他答案 How to implicitly wrap a value that can be null or an array into an Scala Option Option-izing Java getters 但
|
我需要从 Scala访问大量 Java接口.这些接口有可能返回Null的方法,我想将它们转换为Option [T] 我找到了像这样描述Option.apply()的其他答案 How to implicitly wrap a value that can be null or an array into an Scala Option Option-izing Java getters 但是,这要求对于每个Java接口,我手动创建一个Scala包装器.像这样… class ScalaFoo extends JavaFoo {
def bar = Option(super.bar)
}
这似乎很乱,很难维护,容易出错.我不希望所有那些无效的额外代码,我想自动包装所有Java接口,这样如果一个更改,包装器也会改变. 当然,有一种方法可以用implicits做到这一点,不是吗? 解决方法我最近最终得到了这样的东西:object Implicits {
implicit class ConvertToOption[T](t: T) {
def optional = Option(t)
}
}
用法: 假设您有以下Java接口: public interface Fooable {
public String getFoo();
}
public class Foo implements Fooable {
public String getFoo() {
return null;
}
}
在您的Scala代码中: import Implicits._ val foo = new Foo() val myOptionalValue = foo.getFoo.optional //returns an Option[String],in this case None because getFoo returns null (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
