asp网站版权,王也扮演者,安徽专业网站制作公司,大型门户网站建设美丽Java8的flatMap函数#xff0c;作用是#xff1a;如果有值#xff0c;为其执行mapping函数返回Optional类型返回值#xff0c;否则返回空Optional。见到的映射函数往往都只有一句话#xff0c;连大括号都不需要加的#xff0c;如下#xff1a;String personValue Optio…Java8的flatMap函数作用是如果有值为其执行mapping函数返回Optional类型返回值否则返回空Optional。见到的映射函数往往都只有一句话连大括号都不需要加的如下String personValue Optional.ofNullable(map.get(person)).flatMap(value - Optional.of(value.toString().trim())).orElse();可是如果映射函数里可能会抛出异常该怎么办方法也是使用try/catch但是一定要有返回值return返回值类型是Optional。public static void main(String[] args) {Map map new HashMap();String value new SimpleDateFormat(yyyy-MM-dd HH:mm:ss).format(new Date());System.out.println(value);map.put(time,value);//原来的实现方法是String timeValue ;if(map.get(time) ! null){try {Date date new SimpleDateFormat(yyyy-MM-dd HH:mm:ss).parse(map.get(time).toString().trim());timeValue new SimpleDateFormat(yyyy年MM月dd日).format(date);} catch (ParseException e) {e.printStackTrace();}}System.out.println(timeValue);//使用Java8的实现方法是String timeValue2 Optional.ofNullable(map.get(time)).flatMap(value2 - {String ans ;try {Date date new SimpleDateFormat(yyyy-MM-dd HH:mm:ss).parse(value2.toString().trim());ans new SimpleDateFormat(yyyy年MM月dd日).format(date);} catch (ParseException e) {e.printStackTrace();}return Optional.of(ans);}) .orElse();System.out.println(timeValue2);}上诉方法中 可以把flatMap改成map但是返回值的类型就不能是Optional了。应该是返回的值会自动被包装成Optional的。//使用Java8的实现方法是String timeValue2 Optional.ofNullable(map.get(time)).map(value2 - {String ans ;try {Date date new SimpleDateFormat(yyyy-MM-dd HH:mm:ss).parse(value2.toString().trim());ans new SimpleDateFormat(yyyy年MM月dd日).format(date);} catch (ParseException e) {e.printStackTrace();}return ans;}) .orElse();System.out.println(timeValue2);这样看起来使用lambda表达式代码并没有优化多少啊应该是没有了null的判断人们似乎很在意这个代码中不能有null这个词的说。如果最后改成finally块IDEA会出现警告虽然结果没问题。这是因为finally块中最好不能有返回值。Reports finally blocks which can not complete normally.以上就是本文的全部内容希望对大家的学习有所帮助也希望大家多多支持脚本之家。