【愚公系列】2022年01月 Java教学课程 46-获取对象操作类Optional
【摘要】 一、Optional 1.获取对象Optional概述可能包含或不包含非null值的容器对象方法介绍方法名说明static <T> Optional<T> of(T value)获取一个Optional对象,封装的是非null值的对象static <T> Optional<T> ofNullable(T value)获取一个Optional对象,Optional封装的值对象可以是null也...
一、Optional
1.获取对象
-
Optional概述
可能包含或不包含非null值的容器对象
-
方法介绍
方法名 说明 static <T> Optional<T> of(T value) 获取一个Optional对象,封装的是非null值的对象 static <T> Optional<T> ofNullable(T value) 获取一个Optional对象,Optional封装的值对象可以是null也可以不是null -
示例代码
public class OptionalDemo1 { public static void main(String[] args) { //method1(); //public static <T> Optional<T> ofNullable(T value) //获取一个Optional对象,Optional封装的值对象可以是null也可以不是null //Student s = new Student("zhangsan",23); Student s = null; //ofNullable方法,封装的对象可以是null,也可以不是null。 Optional<Student> optional = Optional.ofNullable(s); System.out.println(optional); } private static void method1() { //static <T> Optional<T> of(T value) 获取一个Optional对象,封装的是非null值的对象 //Student s = new Student("zhangsan",23); Student s = null; //Optional可以看做是一个容器,里面装了一个引用数据类型的对象。 //返回值就是Optional的对象 //如果使用of方法,封装的对象如果为空,那么还是会抛出空指针异常 Optional<Student> optional1 = Optional.of(s); System.out.println(optional1); } }
2.常用方法
-
方法介绍
方法名 说明 T get() 如果存在值,返回值,否则抛出NoSuchElementException boolean isPresent() 如果存在值,则返回true,否则为false -
示例代码
public class OptionalDemo2 { public static void main(String[] args) { //get() 如果存在值,返回值,否则抛出NoSuchElementException //public boolean isPresent() 判断Optional所封装的对象是否不为空,如果不为空返回true , 否则返回false //Student s = new Student("zhangsan",23); Student s = null; Optional<Student> optional = Optional.ofNullable(s); //如果封装的是一个null,那么通过get方法再次获取会抛出NoSuchElementException。 if(optional.isPresent()){ Student student = optional.get(); System.out.println(student); }else{ System.out.println("Optional封装的对象为空"); } } }
3.处理空指针的方法
-
方法介绍
方法名 说明 T orElse(T other) 如果不为空,则返回具体的值,否则返回参数中的值 T orElseGet(Supplier<? extends T> supplier) 如果不为空,则返回具体的值,否则返回由括号中函数产生的结果 void ifPresent (Consumer<? super T> action) 如果不为空,则使用该值执行给定的操作,否则不执行任何操作 void ifPresentOrElse(Consumer<? super T> action, Runnable emptyAction) 如果不为空,则使用该值执行给定的操作,否则执行给定的基于空的操作 -
示例代码
public class OptionalDemo3 { public static void main(String[] args) { //method1(); //method2(); //method3(); //method4(); } private static void method4() { //Student s = new Student("zhangsan",23); Student s = null; Optional<Student> optional = Optional.ofNullable(s); //public void ifPresentOrElse(Consumer<? super T> action, Runnable emptyAction)、 //如果不为空,则使用该值执行给定的操作,否则执行给定的基于空的操作。 optional.ifPresentOrElse(student -> System.out.println(student), ()->System.out.println("为空了")); } private static void method3() { //Student s = new Student("zhangsan",23); Student s = null; Optional<Student> optional = Optional.ofNullable(s); //ifPresent (Consumer<? super T> action) //如果不为空,则使用该值执行给定的操作,否则不执行任何操作 optional.ifPresent(student -> System.out.println(student)); } private static void method2() { Student s = new Student("zhangsan",23); //Student s = null; Optional<Student> optional = Optional.ofNullable(s); //orElseGet(Supplier<? extends T> supplier) //如果不为空,则返回具体的值,否则返回由括号中函数产生的结果 Student student = optional.orElseGet(()-> new Student("lisi" , 24)); System.out.println(student); } private static void method1() { //Student s = new Student("zhangsan",23); Student s = null; Optional<Student> optional = Optional.ofNullable(s); //orElse(T other) 如果不为空,则返回具体的值,否则返回参数中的值 Student student = optional.orElse(new Student("lisi", 24)); System.out.println(student); } }
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)