我知道之前已经问过这个问题的变体,我认为我理解了Java 8类型的分辨率系统,但是对于我认为不应该含糊不清的东西,我得到了一个模糊的引用错误:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
interface Function <T, E> {}
public class MyFns {
public static <E, T> Collection<E> map(Function<? super T, E> fn, Collection<T> coll) {
return new ArrayList<>();
}
public static <E, T> List<E> map(Function<? super T, ? extends E> fn, List<T> coll) {
return new ArrayList<>();
}
public static <E, T> List<E> map(Function<? super T, ? extends E> fn, T[] coll) {
return map(fn, Arrays.asList(coll));
}
}
Run Code Online (Sandbox Code Playgroud)
通过JDK 1.8编译时,第三个重载会生成两个编译错误:
Error:(18, 12) java: …Run Code Online (Sandbox Code Playgroud)