java8中的Optional的使用
import java.util.Optional;
public class TestOptional {
public static void main(String[] args) {
TestDemo testDemo = new TestDemo();
// testDemo.setCount(2);
//表示的是如果不给count赋予初始值的时候,那么就会是1,否则就是赋予的初始值。
int count3 = Optional.ofNullable(testDemo).map(item -> item.getCount()).orElse(1);
System.out.println("count3:"+count3);
}
}
运行结果:
count3:2(如果给count赋予初始值的时候),
count3:1(如果不给count赋予初始值的时候)
import java.util.Optional;
public class TestOptional {
public static void main(String[] args) {
TestDemo testDemo = new TestDemo();
// testDemo.setCount(2);
//表示的是如果不给count赋予初始值的时候,那么就会是1,否则就是赋予的初始值。
int count3 = Optional.ofNullable(testDemo).map(item -> item.getCount()).orElseThrow(()->new RuntimeException("count没有赋予初始值"));
System.out.println("count3:"+count3);
}
}
运行结果:
Exception in thread "main" java.lang.RuntimeException: count没有赋予初始值
at com.zyq.TestOptional.lambda$main$1(TestOptional.java:10)
at java.util.Optional.orElseThrow(Optional.java:290)
at com.zyq.TestOptional.main(TestOptional.java:10)
如果count赋予了初始值的,则显示赋予的初始值。
实际项目中使用场景:
package com.zyqtest;
import org.apache.poi.hssf.record.PageBreakRecord;
import org.apache.poi.ss.formula.functions.Choose;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
public class Test {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("天");
list.add("下");
list.add("无");
list.add("敌");
list.add(null);
System.out.println(list.size());
Optional.ofNullable(list).map(obj->{
try{
int i = 1 / 0;
}catch (Exception e){
System.out.println(e.toString());
}
return list;
});
System.out.println(list.size());
}
public int choose(){
if(1==2)
return 1;
return 2;
}
}
运行结果:
5
java.lang.ArithmeticException: / by zero
5
这里要特别注意:前后都是5
浙公网安备 33010602011771号