我无法为我的一生找到以下的解释:
public static void takesAFunction(Function<String, Void> func) {
func.apply("Hi I'm running a function");
}
public static void takesAConsumer(Consumer<String> func) {
func.accept("Hi I'm running a consumer");
}
public static void main(String[] args) throws Exception {
takesAFunction((String str) -> { System.out.println(str); });
takesAConsumer((String str) -> { System.out.println(str); });
}我使用JDK 1.8.0_66和行
takesAFunction((String str) -> { System.out.println(str); });被标记为错误,指出
The method takesAFunction(Function<String,Void>) in the type MyClass
is not applicable for the arguments ((String str) -> {})我不明白怎么
Function<String, Void> 不同于
Consumer<String>当两者都返回空值并且都接受单个字符串参数时。
有人能帮我解释一下这件事吗?因为它要死了。
提前感谢!
发布于 2015-12-16 15:55:38
Function<String, Void>应该具有以下签名:
Void m(String s);不要与void m(String s);混淆!
因此,您需要返回一个Void值-唯一可用的值是null。
takesAFunction((String str) -> {
System.out.println(str);
return null;
});按预期进行编译。
https://stackoverflow.com/questions/34316443
复制相似问题