我有以下代码尝试使用Optional类:
import java.util.Optional;
// one class needs to have a main() method
public class HelloWorld
{
public String orelesMethod() {
return "hello";
}
public void test() {
String value;
value = Optional.ofNullable(null).orElse(orelesMethod());
System.out.println(value);
}
// arguments are passed using the text field below this editor
public static void main(String[] args)
{
HelloWorld hello = new HelloWorld();
hello.test();
}
}
编译时,它说:
incompatible types: Object cannot be converted to String
value = Optional.ofNullable(null).orElse(orelesMethod());
我找不到问题所在,有人可以帮忙吗?
谢谢!
最佳答案
您已定义value
类型为String
,但是Optional.ofNullable(null)
返回Optional<Object>
因为任何对象类型都可以是 null
并且您没有指定实际类型。那么您调用orElse
在 Optional<Object>
类型的对象上因为 T
是 Object
,orElse
方法返回 Object
类型的对象无法转换为String
.
因此调用 ofNullable
时需要指定类型:
value = Optional.<String>ofNullable(null).orElse(orelesMethod());
您可能还想使用orElseGet
方法以便不调用 orelesMethod
当可选包含值时。
关于java - Java中使用Optional类时,对象无法转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51931835/