有时我必须返回一些"对象" (在方法中不是可选的,以保持向后兼容性),返回值是Optional。
这个例子似乎有用(它编译并没有给出错误),但我对此感到不舒服。有人可以解释为什么这有效并且符合这是正确的吗?
package com.test;
import java.util.Optional;
public class Main {
public static void main(String[] args) {
Main main = new Main();
String result = main.WorkingWithOptional();
// yes, I know, an Optional here would be better and cleaner.
if (result != null)
System.out.println(result);
else
System.out.println("RESULT IS NULL");
}
public String WorkingWithOptional() {
Optional<String> res = Optional.of("Test");
return res.orElse(null);
}
}
答案 0 :(得分:2)
orElse
的工作原理是,如果Optional
为空,则需要返回默认值。如果Optional
不为空,则返回其包含的值。
在这种情况下,您使用的默认值为null
。它可以是任何String
例如"NOT FOUND"
。
答案 1 :(得分:1)
如果我们查看java doc Optional#orElse(T other)
如果存在则返回值,否则返回其他
在你的情况下
Optional<String> res = Optional.of("Test");
res.get()
或res.orElse()
将始终返回"Test"
字符串。
您可以将Optional
视为值的包装器。它可能包含值,也可能不包含值。
Optional op = Optional.ofNullable(null); // empty
System.out.println(op.orElse("default value")); // "default value"
op.get();// will produce NoSuchElementException, becase it is empty