java Getting Error::此表达式的目标类型必须是函数接口
我正在尝试实现一个示例库,客户机可以使用它执行代码,为了实现这个示例库,我使用了JAVA的一个函数式编程特性。 但是获取编译错误此表达式的目标类型必须是函数接口
@FunctionalInterface
public interface ImplemenetIt<T> {
public T provideYourImpl();
}
public class HighOrderFunctionClass<T> {
public T executeCode(ImplemenetIt<T> it, T defaultAnswer) {
T answer = defaultAnswer;
return () -> { // At this line I am getting error
try {
answer = it.provideYourImpl();
} catch (Exception ex) {
} finally {
return answer;
}
};
}
}
请告诉我我遗漏了什么
# 1 楼答案
Alambda expression是功能接口的实现。方法
executeCode()
返回泛型类型(T
),并且T
不是函数接口,但方法executeCode()
中的代码试图返回函数接口方法
executeCode()
的另一个参数是函数接口,因此当调用该方法时,可以将lambda表达式作为参数传递,即这里有一个更“具体”的例子