Optional是什么
Optional类是Java中的一个泛型类,引入自Java8版本,它用于表示一个可能为空的值,并提供了一些便捷的方法来处理这种情况,以避免空指针异常。
是一种优雅地处理可能为空的值的方式
可以包装任意类型的值,包括引用类型和基本类型的包装类
Optional类常见方法
可以通过调用Optional.of(value)来创建一个包含非空值的Optional实例
public static <T> Optional<T> of(T value) {
return new Optional<>(value);
}
为value创建一个Optional对象,如果value为空则 会报出NullPointerException异常。
Optional<String> optional = Optional.of("Hello");
//输出Hello
System.out.println(optional.get())
可以通过调用Optional.empty()来创建一个空的Optional实例
public static<T> Optional<T> empty() {
@SuppressWarnings("unchecked")
Optional<T> t = (Optional<T>) EMPTY;
return t;
}
返回了一个已经创建好的空的Optional实例,这样我们就可以方便地使用它来表示空值。
Optional<String> optional = Optional.empty();
//输出false
System.out.println(optional.isPresent());
可以通过调用Optional.ofNullable(value)来创建一个Optional实例,如果value为null,则返回空的Optional实例,否则返回包含该值的Optional实例
public static <T> Optional<T> ofNullable(T value) {
return value == null ? empty() : of(value);
}
为value创建一个Optional对象,但可以允许value为null值。
String value =null;
Optional<String> optional = Optional.ofNullable(value);
//输出false
System.out.println(optional.isPresent());
可以使用isPresent()方法来检查Optional实例是否包含值
public boolean isPresent() {
return value != null;
}
判断当前value是否为null,如果不为null则返回true,否则false。
Optional<String> optional = Optional.of("Hello");
System.out.println(optional.isPresent()); // 输出: true
通过使用ifPresent方法,可以在Optional实例包含值时进行特定的操作,而无需手动进行空值的判断。这可以使代码更加简洁和可读。
如果不为null值就执行函数式接口的内容。
public void ifPresent(Consumer<? super T> consumer) {
if (value != null)
consumer.accept(value);
}
Optional<String> optional = Optional.of("Hello");
optional.ifPresent(value -> System.out.println("Value: " + value));
// 输出: Value: Hello
Optional<String> emptyOptional = Optional.empty();
emptyOptional.ifPresent(value -> System.out.println("Value: " + value));
// 不会输出任何内容
可以使用get()方法来获取Optional实例中的值,但需要先通过isPresent()方法进行判断,以避免空指针异常
public T get() {
if (value == null) {
throw new NoSuchElementException("No value present");
}
return value;
}
返回当前的值,如果为空则报异常。
Optional<String> optional = Optional.of("Hello");
if (optional.isPresent()) {
System.out.println(optional.get()); // 输出: Hello
}
可以使用orElse(defaultValue)方法来获取Optional实例中的值,如果Optional实例为空,则返回默认值
public T orElse(T other) {
return value != null ? value : other;
}
返回当前值,如果为null则返回other。
Optional<String> optional = Optional.empty();
String value = optional.orElse("Default");
System.out.println(value); // 输出: Default
....
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异