我正在尝试实现一个示例库,客户端可以使用它来执行他们的代码,为了实现它,我使用了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;
}
};
}
}
请说说我缺了什么。
lambda表达式是函数接口的实现。方法executeCode()
返回泛型类型(T
),而T
不是函数接口,但方法executeCode()
中的代码正尝试返回函数接口。
此外,方法executeCode()
的参数之一是函数接口,因此当调用该方法时,可以将lambda表达式作为参数传递,即。
executeCode( () -> return null, someDefault )
这里有一个更“具体”的例子。
public class Tester {
public static void main(String[] args) {
HighOrderFunctionClass<String> hofc = new HighOrderFunctionClass<>();
String someDefault = "I am the default value.";
ImplemenetIt<String> it = () -> return "Hello world.";
String result = hofc.executeCode(it, someDefault);
}
}
问题内容: 我正在尝试在Java中使用lambda和流,但我对此很陌生。当我尝试创建lambda表达式时,我在IntelliJ中收到了此错误“ lambda转换的目标类型必须是接口” 难道我做错了什么? 问题答案: 我怀疑这只是Java的类型推断不够聪明。尝试
我是爪哇的新手。我不明白为什么会发生这些错误。尝试创建一个数组列表,以便它保存每个对象。我得到的错误是 表达式的类型必须是数组类型,但它解析为数组列表上的行“newbug1[i].setpecies();” 提前致谢
从0.13.2更新到0.14.2后,我发现以下错误: 对此已经有几个问题了。最常见的错误是拼错React.component(没有大写字母C)。另一个是尝试使用ES6类的版本 但我已经成功地使用了带有React 0.13.x的ES6类,我在所有地方都使用大写字母C,并且记录React.Component似乎给出了一个合适的结果(函数ReactComponent(…) 经过一些搜索,我做了这3个测试
我创建这个类是为了更好地使用它 然后我想创建一个简单的函数来剪辑一个矩形,就像这样 但是当我将rect传递到我的函数中时,我在标题中得到了错误。我甚至还打印了字体 我想知道Rect样式的对象和Rect对象之间是否有区别,因为我太困惑了。此外,在屏幕上绘制矩形是布局tic-tac-toe GUI的最佳方式,还是绘制线条更简单。
我正尝试将Exchange Web服务(EWS)与应用程序和OAuth2身份验证一起使用。 我所做的: null
我不知道我的代码发生了什么。我似乎无法弄清楚为什么数组会给我这个错误。该行是特别是 我的代码: