2022-01-15 10:05:42
浏览数 (1)
文章目录
一、Optional
1.获取对象
- Optional概述
可能包含或不包含非null值的容器对象
- 方法介绍
代码语言:javascript
复制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.常用方法
代码语言:javascript
复制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.处理空指针的方法
代码语言:javascript
复制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);
}
}