Guava学习笔记(1) --- Optional类的基本使用
程序员文章站
2022-06-07 09:46:34
...
/**
* Optional测试类
*/
public class OptionalTest {
@Test
public void test() {
//创建空的Optional对象
Optional.empty();
//使用非null值创建Optional对象,不能传入null,负责会报错
//Optional.of(null);
Optional.of("123");
//使用任意值创建Optional对象
Optional<Object> nullable = Optional.ofNullable(null);
//判断是否引用缺失的方法(建议不直接使用),这种方法和普通的判断是否为空方法一样的效果
boolean present = nullable.isPresent();
//输出结果为false,表示引用不存在,即值为null
//System.out.println(present);
/**
* 判断是否引用缺失,如果不为空(optional引用存在时执行)则执行内部函数
* 类似的方法: map filter flatMap
*/
nullable.ifPresent(System.out::println);
/**
* 当引用缺失时执行并可以自定义返回值
*/
String orElse = (String)nullable.orElse("引用缺失");
System.out.println( "orElse:" + orElse);
/**
* 当引用缺失时可以自定义内部函数
*/
String orElseGet = (String)nullable.orElseGet(
() ->
{
return "引用缺失";
});
System.out.println("orElseGet:" + orElseGet);
/**
* 当引用缺失时抛出异常
*/
/*nullable.orElseThrow(
() ->
{
throw new RuntimeException("引用缺失");
});
*/
}
/**
* 使用流处理方法抛出空指针异常的处理方法
*/
private static void stream(List<String> list) {
list.stream().forEach(System.out::println);
}
/**
* 改进版
* @param list
*/
private static void streamImprove(List<String> list) {
Optional.ofNullable(list)
.map(List::stream)
//如果为空则创建空的流
.orElseGet(Stream::empty)
.forEach(System.out::println);
}
public static void main(String[] args) {
//如果传入是null则会报空指针异常
//stream(null);
streamImprove(null);
}
}
上一篇: C语言实现Crout分解
推荐阅读
-
PHP getID3类的使用方法学习笔记【附getID3源码下载】
-
MVC使用T4模板生成其他类的具体实现学习笔记2
-
MVC项目结构搭建及单个类的实现学习笔记1
-
Python学习笔记——主要函数及基本使用(与C的对比)
-
Solr学习笔记---部署Solr到Tomcat上,可视化界面的介绍和使用,Solr的基本内容介绍,SolrJ的使用
-
python学习笔记——matpoltlib的使用(1)
-
Linux计划任务Crontab学习笔记(1):应用场景和基本使用
-
php学习笔记之mb_strstr的基本使用
-
Vue.js学习笔记--4. 组件的基本使用
-
超详细的typeScript笔记(二)类的基本使用