3 回答
TA贡献1866条经验 获得超5个赞
您已定义value
为 type String
,但Optional.ofNullable(null)
返回,Optional<Object>
因为任何对象类型都可以,null
而您没有指定实际类型。然后您正在调用orElse
类型的对象,Optional<Object>
因为T
是Object
,该orElse
方法返回一个Object
无法转换为类型的对象String
。
因此,您需要在调用时指定类型ofNullable
:
value = Optional.<String>ofNullable(null).orElse(orelesMethod());
您可能还想使用orElseGet
method 以便orelesMethod
在可选项包含值时不调用。
TA贡献1847条经验 获得超7个赞
一个字符串是一个对象,但一个对象不一定是一个字符串,因此这个错误。试试这个 :
public String orelesMethod() {
return "hello";
}
public void test() {
Object value;
value = Optional.ofNullable(null).orElse(orelesMethod());
System.out.println(value);
}
TA贡献1824条经验 获得超5个赞
Optional<T>
是处理值的新方法(自 Java 8 起),可能是null
.
您可以通过调用获取值.get()
。
请注意,.get()
在未设置值的情况下调用会引发 NoSuchElementException。
编辑:
此外,您的orElse()
will的返回值与您初始化类的时间相同。因为那不是一个字符串,但null
你没有得到一个字符串作为回报。
添加回答
举报