为什么 java 编译器在“翻译”方法中给我“类型参数 T 隐藏了类型 T”?
public static interface Translator<T, E> {
E call(T t);
}
public static <T, E> List<E> translate(List<T> l, Translator<T, E> t) {
..
}
如果我删除类型参数 T
public static <E> List<E> translate(List<T> l, Translator<T, E> t)
警告消失了,但现在我做不到
List<Long> l = new ArrayList<>();
List<String> r = translate(l, new Translator<Long, String>() { .. })
因为它给了我这个错误
The method translate(List<T>, GFn.Translator<T,E>)
in the type GList is not applicable for the arguments
(List<Long>, new GFn.Translator<Long,String>(){})