java中的Optional类学习

Optional实际上是个容器,它是一个装一个对象的容器。这个对象可能是个空,可能是非空。

Optional类可以使用来避免NullPointerException,避免频繁的判段对象为null的过程

1、创建Optional对象的方法:
  (1)Optional.of(xx); 只能装非空对象
  (2)Optional.ofNullable(x); 装可以是null的对象
  (3)Optional<T> empty() 直接返回一个空箱子对象
 2、如何取出Optional容器中的对象
  (1)get() 必须配合of(xx)使用,因为这里面的对象不能是null
  (2)orElse(T other) 如果Optional容器中的对象是空的,用other代替
  (3)orElseGet(Supplier<? extends T> other) 如果Optional容器中的对象是空的,用other这个供给型接口提供的对象代替
  (4)orElseThrow(Supplier<? extends X> exceptionSupplier)
3、其他操作
  Optional<T> filter(Predicate<? super T> predicate)

示例:

Optional<String> opt = Optional.ofNullable("Optional");,传入的参数可以是null的

opt.orElse("other"); //如果为null,用other替代

原文地址:https://www.cnblogs.com/dirsoen/p/12658449.html

时间: 2024-11-05 19:29:18

java中的Optional类学习的相关文章

Java中的Scanner类学习

转载自: Java中Scanner的nextInt(),next(),nextLine()方法总结 今天在java上机课时遇到了个小问题,使用Scanner输入数据时,使用了一次nextInt(),一次nextLine(),却只接收了一个整数.代码如下 code1: 1 package cn.dx; 2 3 import java.util.Scanner; 4 5 public class ScannerTest { 6 7 public static void main(String[] a

理解、学习与使用 Java 中的 Optional

从 Java 8 引入的一个很有趣的特性是 Optional  类.Optional 类主要解决的问题是臭名昭著的空指针异常(NullPointerException) -- 每个 Java 程序员都非常了解的异常. 本质上,这是一个包含有可选值的包装类,这意味着 Optional 类既可以含有对象也可以为空. Optional 是 Java 实现函数式编程的强劲一步,并且帮助在范式中实现.但是 Optional 的意义显然不止于此. 我们从一个简单的用例开始.在 Java 8 之前,任何访问对

Java中的嵌套类和内部类

以前看<Java编程思想>的时候,看到过嵌套类跟内部类的区别,不过后来就把它们的概念给忘了吧.昨天在看<数据结构与算法分析(Java语言版)>的时候,又遇到了这个概念,当时就很大的疑惑:嵌套类跟内部类有什么区别?只有是否有关键字static的区别吗? 所以今天找了个时间查了一下两者的详细区别,总结在这篇博客中,既方便自己的复习和学习,也启示他人吧. 1,概念: 定义在一个类内部的类,叫作"嵌套类".嵌套类分为两种:static的和非static的.后者又有一个专

Java中的回调函数学习

Java中的回调函数学习 博客分类: J2SE JavaJ# 一般来说分为以下几步: 声明回调函数的统一接口interface A,包含方法callback(); 在调用类caller内将该接口设置为私有成员private A XXX; 在caller内提供实现A接口的public方法(将外部该接口的实现类通过形参传入caller的XXX): caller的某个方法dosth()中会用到XXX.callback()方法; 在caller的实例中,先实现A接口,后调用dosth()方法: 网上流行

java中的 FileWriter类 和 FileReader类

java中的 FileWriter类 和 FileReader类的一些基本用法 1,FileWriter类(字符输出流类) 构造方法:FileWriter fw = new FileWriter(String fileName);//创建字符输出流类对象和已存在的文件相关联.文件不存在的话,并创建. 如:FileWriter fw = new FileWriter("C:\\demo.txt"); FileWriter fw = new FileWriter(String fileNa

使用myeclipse开发java,解决java中继承JFrame类出现The type JFrame is not accessible due to restriction的问题

在java中创建窗体,导入了java中的JFrame类,之后会出现错误: Access restriction: The type QName is not accessible due to restriction on required library D:\myeclipse professer2014 可以解决的办法为: Project—>Properties—>选中Java Build Path—>选择Libraries,出现下面界面: 选中窗口中原有的JRE库,点击Remov

java中的File类

File类 java中的File类其实和文件并没有多大关系,它更像一个对文件路径描述的类.它即可以代表某个路径下的特定文件,也可以用来表示该路径的下的所有文件,所以我们不要被它的表象所迷惑.对文件的真正操作,还得需要I/O流的实现. 1.目录列表 如果我们想查看某个目录下有那些文件和目录,我们可以使用File中提供的list方式来查看,这很像linux下的ls命令. 查看E:/html文件夹下所有的php文件,执行的时候输入的参数为正则表达式 1 package com.dy.xidian; 2

java 中的String类

String a = "aaa"; 用这种方式的时候java首先在内存中寻找"aaa"字符串,如果有,就把aaa的地址给它 如果没有则创建 String a = new String("aaa"); 是不管内存中有没有"aaa" 都开辟一块新内存保存它 可以用以下方法验证下 String a = "aaa"; String b = "aaa"; String c = new String

Java中的Object类

关于Object类的equals()方法的特点: 1) 自反性:对于非空引用x来说,x.equals(x)一定返回true: 2) 对称性:对于非空引用x和y来说,如果x.equals(y)返回true,那么y.equals(x)一定返回true: 3) 传递性:对于非空引用x.y和z来说,如果x.equals(y)返回true,并且y.equals(z)返回true,那么x.equals(z)一定返回true: 4) 一致性:对于非空引用x和y来说,如果x.equals(y)返回true,那么