jdk17测试
1、empty方法
//建议常用
@Test
public void empty(){
//返回一个Optional容器对象,而不是null
Optional<Object> optional = Optional.empty();
System.out.println(optional.isPresent());//false
System.out.println(optional.isEmpty()); //true
}
2、of方法
//不建议使用 能确定值不为空的情况下可以使用
@Test
public void of(){
String value = null;
// Optional<String> optional = Optional.of(value);//报错 java.lang.NullPointerException
String value1 = "123";
Optional<String> optional1 = Optional.of(value1);
System.out.println(optional1.isPresent());//true
// System.out.println(optional1.isEmpty()); //false
}
3、ofNullable方法
//推荐使用
@Test
public void ofNullable(){
String value = null;
Optional<Object> optional = Optional.ofNullable(value);
System.out.println(optional.isPresent());//false
System.out.println(optional.isEmpty()); //true
String value1 = "123";
Optional<Object> optional1 = Optional.ofNullable(value1);
System.out.println(optional1.get());//123
System.out.println(optional1.isPresent());//true
System.out.println(optional1.isEmpty()); //false
}
4、get方法
//尽量别用
@Test
public void get(){
Optional<Object> optional = Optional.ofNullable(null);
// System.out.println(optional1.get());//java.util.NoSuchElementException: No value present
if(optional.isPresent()){
System.out.println(optional.get());
}
System.out.println(optional.orElse("123"));//123 orElse: 不管Optional对象为空或者非空都会执行传入的这个参数
//推荐orElseGet 减少执行代价
System.out.println(optional.orElseGet(() -> "1234"));//1234 orElseGet: 只要Optional对象为空的时候才会执行Supplier里面的这个方法
// optional.orElseThrow(() -> new RuntimeException("not found"));
}
5、ifPresent方法
//判断Optional中是否有值,返回boolean,某些情况下很有用,但尽量不要用在if判断体中
@Test
public void isPresent(){
Optional<String> optional = Optional.ofNullable(null);
optional.ifPresent(str -> System.out.println(str));
optional.ifPresentOrElse(str -> System.out.println(str), () -> System.out.println("not found"));
}
6、filter方法
@Test
public void filter(){
Optional<String> optional = Optional.ofNullable("123");
Optional<String> optional1 = optional.filter(str -> str.equals("123"));
System.out.println(optional1.isPresent());//false
Optional<String> optional2 = optional.filter(str -> str.equals("1234"));
System.out.println(optional2.isPresent());//true
}
7、map方法
@Test
public void map(){
Optional<String> optional = Optional.ofNullable("123");
Optional<Long> optionalLong = optional.map(Long::parseLong);
System.out.println(optionalLong.isPresent());
}