Optional类
2021/12/2 23:08:22
本文主要是介绍Optional类,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
- https://www.jianshu.com/p/94c69d2ef00f
- Optional类
是一个容器可以存放非空或是空的对象,可以判断出对象是否为空,
主要是判断是否为null,可以类似于if-else等操作,
但是不是要取代if-else
package com.bjsxt.servier1.controller; import com.sun.media.sound.SoftTuning; import java.sql.SQLOutput; import java.util.Optional; public class Style { public static void main(String[] args) { /** Optional类 是一个容器里面可以存放对象,可以存放为null的对象 * Optional.of(obj) 传入一个非空的对象 * Optional.ofNullable(obj) 允许传入一个空对象 * isPresetn() 是一个判断空的方法 如果这个类被创建了或是这个属性有值则返回true * get() 取对象 * * */ Integer a = null; Integer b = 1; String obj = new String("rudy"); String nulls = ""; Test test = new Test(); Son son = new Son(); son.setName("rudy"); String name = son.getName(); Optional<Object> obj1 = Optional.ofNullable(a); if(obj1.isPresent()){ System.out.println("存在"); }else{ System.out.println("不存在"); } Optional<Integer> b1 = Optional.ofNullable(b); /** orElse(T t) 传入一个默认值来作为否则之后的内容 * 如果Optional容器中有值怎输出,没有值则输出默认值就是orElse()中的值 * */ System.out.println(obj1.orElse(2)); System.out.println(b1.orElse(3)); /** orElseGet() 这个方法是如果Optional容器中对象为空时不再是返回默认值 * 而是返回一个方法 * */ Integer c = null; Optional<Object> optional = Optional.ofNullable(c); Object o = optional.orElseGet(() -> son.getName()); Object r = optional.orElseGet(() -> { System.out.println("空的"); return "傻逼"; }); System.out.println(o); System.out.println(r); System.out.println("================"); /** ifPresetn() :Optional中所存的对象中不为空时会执行指定代码 * */ Integer d = null; Integer e = 2; Optional<Integer> d1 = Optional.ofNullable(d); Optional<Object> e1 = Optional.ofNullable(e); d1.ifPresent(p-> System.out.println("不为空1")); e1.ifPresent(p-> System.out.println("不为空2")); /** 小练习 map方法相当于是 if(!=null){} 包含了isPresent 是否存在 * orElse()方法就是else{} */ Optional<Integer> e2 = Optional.ofNullable(d); String s = e2.map(y -> { System.out.println("有有有"); return "不为空"; }).orElse("没有啊"); System.out.println(s); Integer f = 1; System.out.println(f+f); Optional<Integer> f1 = Optional.ofNullable(f); Object rudy = f1.map(v -> v + v).map(v -> v + v).map(v -> { System.out.println(v); return null; }).orElse("rudy"); System.out.println(rudy); } }
package com.bjsxt.servier1.controller; import com.sun.media.sound.SoftTuning; import java.sql.SQLOutput; import java.util.Optional; public class Style { public static void main(String[] args) throws Throwable { Integer a =1; Integer b =null; Optional<Integer> a1 = Optional.ofNullable(a); //两个对象是否相等 System.out.println(a1.equals(1)); System.out.println(a1.equals(b)); System.out.println(a1.isPresent()); Integer rudy = a1.orElse(666); Optional<Integer> b1 = Optional.ofNullable(b); //判断对象是否为空 如果不为空返回该对象,否则返回该方法的指定值 System.out.println(b1.orElse(666)); //如果该对象不为空就返回该对象,为空则返回该方法指定的方法值 Integer 没有值啊 = b1.orElseGet(() -> { System.out.println("没有值啊"); return 777; }); System.out.println(没有值啊); //如果对象为空 这个方法会抛出一个异常对象, /* b1.orElseThrow(()->{ System.out.println("抛出一个异常"); return new Throwable("异常"); });*/ // //filter是筛选添加一个条件 满足后执行指定 否则执行orElse Integer integer = a1.filter(v -> v > 1).orElse(666); System.out.println(integer); //map主要是判断是否null 然后进行操作 Integer integer1 = a1.map(o -> o + o).orElse(999); System.out.println(integer1); } }
这篇关于Optional类的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?