Optional中的方法
代码测试
import java.util.Optional;
/*
Optional类(JDK1.8提供)的主要功能是进行null的相关处理,在以前进行程序开发的时候,为了防止程序出现null指向异常,往往追加有null的验证;
传统的引用传递:在引用接收的一方都是被动的进行判断,例如去银行取钱,判断是否为假币应该是银行的任务,但是如果银行不进行判断那么这个任务就交到了取钱人的身上,取钱人就属于被动一方
所以为了解决被动的处理操作,在java中提供了Optional类以实现空的处理操作:
- 返回空数据:public static<T> Optional<T>empty();
- 获取数据:public T get();
- 保存数据,但是不允许出现null: public static<T> Optional<T> of(T value);
|- 如果在保存数据时候出现null,则会出现NullPointerException的异常
- 保存数据,允许为空: public static<T> Optional<T> ofNullable(T value);
- 空的时候返回其它数据:public T orElse(T other);
在所有引用数据类型的操作处理中,null是一个重要的技术问题,所以Optional类有很大的用处,在以后的开发中也会进行大量使用
*/
interface IMessage {
String getContent();
}
class MessageImpl implements IMessage {
@Override
public String getContent() {
return "www";
}
}
class MessageUtil {
private MessageUtil() {
}
public static Optional<IMessage> getMessage() {
// return Optional.of(new MessageImpl()); // of()方法返回非空的Optional类型的对象,如果of()方法传入的对象为空,则会出现异常
return Optional.ofNullable(null); // 可以传入空的参数
}
public static void useMessage(IMessage msg) {
if (msg != null) {
System.out.println(msg.getContent()); // 可能会出现空而导致空指向
}
}
}
public class Main {
public static void main(String[] args) {
// 如果为空使用get()方法获取数据就会出现
// Exception in thread "main" java.util.NoSuchElementException: No value present
// at java.base/java.util.Optional.get(Optional.java:143)
// at Demo_2_5_Optional.Main.main(Main.java:45)
// 的异常信息,所以此时可以跟换为orElse()方法
IMessage tem = MessageUtil.getMessage().orElse(new MessageImpl()); // get() 获取数据,返回的是get()方法设置的泛型类型
MessageUtil.useMessage(tem);
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)