我正在使用lambda表达式进行一些测试,但我的代码无法编译。我的lambda实现有问题还是异常处理有误?以下代码的正确实现方式应该是什么?
编译错误是:
不兼容类型:lambda表达式中的返回类型错误
class MyObject { }
interface Creatable<T> {
T create() throws IOException;
}
/* Using the code: */
Creatable<MyObject> creator = () -> {
try {
return new MyObject();
} catch (IOException e) {
e.printStackTrace();
}
};
MyObject obj1 = creator.create();
如果我移除try catch块并在方法中声明要抛出的异常,代码将编译并正常运行。
Creatable<MyObject> creator = () -> new MyObject();
编译错误是:
不兼容类型:lambda表达式中的返回类型错误