我有两种重载方法和一种测试方法
<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-社区版