Java之Optional类
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);
}
}
作者:时间完全不够用啊
来源链接:https://www.cnblogs.com/0099-ymsml/p/15864558.html
版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。
2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。