函数参数返回的方法重载歧义方法调用错误

时间:2018-11-22 10:52:46

标签: java

我有两种重载方法和一种测试方法

<T, R> R ifNotEmpty(T o, Function<T, R> function)
<T> void ifNotEmpty(T o, Consumer<T> consumer)
void test(String) {
//do nothing
}

我打电话时

ifNotEmpty("aaa", x -> test(x));

我遇到错误

Ambiguous method call. Both
ifNotEmpty(String,Function<String, R>) and
ifNotEmpty(String,Consumer<String>) match

为什么?

当我这样写的时候,是正确的

ifNotEmpty("aaa", this::test);

这样也正确

ifNotEmpty("aaa", (String x) -> test(x));

为什么?

我使用了JDK-1.8和IDEA-2017.3.5-社区版

0 个答案:

没有答案