首页 > 试题广场 >

以下代码中,关于Java的方法引用和Lambda表达式的区别

[单选题]
以下代码中,关于Java的方法引用和Lambda表达式的区别,哪项是正确的?
Function<String, Integer> f1 = Integer::parseInt;
Function<String, Integer> f2 = s -> Integer.parseInt(s);
  • f1和f2的行为完全相同,编译后的字节码也完全相同
  • f1使用方法引用可能避免创建额外的Lambda类,性能更优
  • f1不能处理异常,而f2可以在Lambda中添加异常处理
  • f1和f2的类型推断机制不同
C选项:感觉解析不对。
第一:parseInt抛出的是非受检异常,都不用处理,编译随便通过
第二:如果要处理这个非受检异常,方法引用确实不能处理,没地方写try-catch,而Lambda可以
   在方法体中写try-catch处理,这么来看的话C就是对的
第三:如果是说最终调用能否处理异常的话,那么两个都可以写try-catch处理,因为apply没有异常声明,加上parseInt抛出的
   是非受检,完全不会出错,



编辑于 今天 09:32:14 回复(0)