当前位置:首页 > Java技术 > Java之Optional类

Java之Optional类

2022年11月09日 09:56:33Java技术6

Optional中的方法

Java之Optional类 _ JavaClub全栈架构师技术笔记

 

代码测试

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),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/java/68677.html

标签: Java
分享给朋友:

“Java之Optional类” 的相关文章

java基础知识讲解(一)数据类型和运算符

java基础知识讲解(一)数据类型和运算符

Java是一种强类型语言,每个变量都必须声明其数据类型。 Java的数据类型可分为两大类:基本数据类型(primitive data type)和引用数据类型(reference data type)。 Java中定义了3类8种基本数据类型 数值型- b...

Java 内存模型

Java 内存模型

📦 本文以及示例源码已归档在 javacore Java 内存模型(Java Memory Model),简称 JMM。 JVM 中试图定义一种 JMM 来屏蔽各种硬件和操作系统的内存访问差异,以实现让 Java 程序在各种平台下都能达到一致的内存访问效果。...

Java虚拟机1:什么是Java

Java虚拟机1:什么是Java

前言 让我们来看一下Java的广告词,来自http://www.java.com/zh_CN/about/: 97%的企业桌面运行Java 美国有89%的桌面(或计算机)运行Java 全球有900万Java开发人员 开发人员的头号选择...

Java 日志框架详解

Java 日志框架详解

1. JUL学习 JUL全称Java util Logging是java原生的日志框架,使用时不需要另外引用第三方类库,相对其他日志框 架使用方便,学习简单,能够在小型应用中灵活使用。 1.1 架构介绍 Loggers...

冒泡排序的原理,思路,以及算法分析(Java实现)

冒泡排序的原理,思路,以及算法分析(Java实现)

冒泡排序 如果遇到相等的值不进行交换,那这种排序方式是稳定的排序方式。 1.原理:比较两个相邻的元素,将值大的元素交换到右边 2.思路:依次比较相邻的两个数,将比较小的数放在前面,比较大的数放在后面。 (1)第一次比较:首先比较第...

JAVA的JDK环境变量的配置JAVA

JAVA的JDK环境变量的配置JAVA

首先要在官网下载java 官网:http://www.oracle.com/technetwork/java/javase/downloads/ 到这个界面 选择我接受 记住该地址 最好的办法新建记事本,然后按ctrl+s保存 java环境变量的...

Java对象的大小

基本数据的类型的大小是固定的,这里就不多说了。对于非基本类型的Java对象,其大小就值得商榷。 在Java中,一个空Object对象的大小是8byte,这个大小只是保存堆中一个没有任何属性的对象的大小。看 下面语句: Object ob = new Ob...

在JAVA 中将堆与栈分开的原因

栈是运行时的单位,而堆是存储的单位。 栈解决程序的运行问题,即程序如何执行,或者说如何处理数据;堆解决的是数据存储的问题,即数据怎么 放、放在哪儿。 注意:在Java中一个线程就会相应有一个线程栈与之对应 栈因为是运行单位,因此里面存储的信息都是跟...

全网最细笔记java与kotlin的一些异同

本文主要介绍java与kotlin的一些异同 后面可能还会继续比较kotlin和dart 期待吗? 打印日志 Java System.out.print("Amit Shekhar"); S...

JAVA UUID 生成唯一标识

Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket Reprint it anywhere u want 需求     项目在设计表的时候,要处理并发多...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。