学生排队 LeetCode bootstrap 哨兵模式 codeigniter elasticsearch pdo interface bitmap jwt 前端vue框架 jquery的点击事件 cpm计算 chrome发送post请求 mysql重启 python平方函数 java获取当前时间 java安装教程 linux文档 linux中sudo 内存修改器 幽城幻剑录五内 0x0000004e js轮播图代码 dnf刷什么图赚钱 cubase下载 js获取子元素 一键换肤大师 layout下载 极限防守图 alert换行 pr抠图 python编辑器 cpu和显卡怎么搭配 ps图层蒙版实例教程 3dmax2009注册机 打印机故障解析与维修 闲鱼怎么加好友 苹果手机打不出电话 按键精灵脚本制作教程
当前位置: 首页 > 学习教程  > 编程语言

(开发支持类库)Optional类

2021/1/13 20:12:57 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

Optional类 Optionnal类主要功能是进行null的相关处理, package 开发支持类库;interface IMessage{public String getContent(); }class MessageImpl implements IMessage{Overridepublic String getContent() { //覆写接口方法return "www.baidu.com";…

Optional类

Optionnal类主要功能是进行null的相关处理,

package 开发支持类库;

interface IMessage{
	public String getContent();
}

class MessageImpl implements IMessage{
	@Override
	public String getContent() {	//覆写接口方法
		return "www.baidu.com";		
	}
}

class MessageUtil{
	public static IMessage getMessage() {
		return new MessageImpl();	//返回一个实例化对象
	}
	public static void useMessage(IMessage msg) {
		if(msg != null) {
			System.out.println(msg.getContent());		//有可能因为出现null,而导致空指向
		}
	}
}

public class Optional类 {
	public static void main(String[] args) {
		MessageUtil.useMessage(MessageUtil.getMessage());	
	}
}

www.baidu.com

在引用接收的一方往往都是被动的进行判断。所以为了解决这种被动的处理操作,在Java类照片给你提供有一个OPtionnal类,这个类可以实现null的处理操作。 在这个类里面提供有如下的操作方法:

  • 返回空的数据:public static<T>Optional<T>empty();
  • 获取数据:public T get();
  • 保存数据,但是不允许出现null:public static <T>Optional<T>of(T value);

        如果在保存数据的时候存在null,则会抛出NullPointException异常。

  • 保存数据,允许为空:public static <T> Optional<T>ofNullable(T value);
  • 空的时候返回其他数据:public T orElse(T other);

范例:修改程序,按照正规的程序完成

package 开发支持类库;

import java.util.Optional;

interface IMessage{
	public String getContent();
}

class MessageImpl implements IMessage{
	@Override
	public String getContent() {	//覆写接口方法
		return "www.baidu.com";		
	}
}

class MessageUtil{
	public static Optional<IMessage> getMessage() { 	//返回一个Optional对象
		return Optional.of(null);		//空值
	}
	public static void useMessage(IMessage msg) {
		if(msg != null) {
			System.out.println(msg.getContent());		//有可能因为出现null,而导致空指向
		}
	}
}

public class Optionnal类 {
	public static void main(String[] args) {
		IMessage temp = MessageUtil.getMessage().get();	//获取数据
		MessageUtil.useMessage(temp);	
	}
}

Exception in thread "main" java.lang.NullPointerException
    at java.base/java.util.Objects.requireNonNull(Objects.java:208)
    at java.base/java.util.Optional.of(Optional.java:111)
    at 开发支持类库.MessageUtil.getMessage(Optionnal类.java:18)
    at 开发支持类库.Optionnal类.main(Optionnal类.java:29)

此时Optional.of()的内容为null,运行就会出错并且明确告诉你次方法在哪个位置,空指针异常。

由于Optional类中允许保存有null的内容,所以在数据获取的时候也可以进行null的处理。如果使用get()方法在执行时就会出现 “Exception in thread "main" java.lang.NullPointerException”异常,所以此时可以更换为orElse(T other);

范例:使用orElse(T other)解决null值

package 开发支持类库;

import java.util.Optional;

interface IMessage{
	public String getContent();
}

class MessageImpl implements IMessage{
	@Override
	public String getContent() {	//覆写接口方法
		return "www.baidu.com";		
	}
}

class MessageUtil{
	public static Optional<IMessage> getMessage() { 	//返回一个Optional对象
		return Optional.ofNullable(null);		//有对象
	}
	public static void useMessage(IMessage msg) {
		if(msg != null) {
			System.out.println(msg.getContent());		//有可能因为出现null,而导致空指向
		}
	}
}

public class Optionnal类 {
	public static void main(String[] args) {
		IMessage temp = MessageUtil.getMessage().orElse(new MessageImpl());	//如果数据为null,则返回一个Message对象
		MessageUtil.useMessage(temp);	
	}
}

www.baidu.com

在所有引用数据类型的操作处理之中,null是一个重要的技术问题,所以JDK1.8提供的Optional类对于null的处理很有帮助,同时也是日后进行项目开发之中使用很多的程序类。


本文链接: http://www.dtmao.cc/news_show_600264.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?