Почему java-компилятор дает мне «параметр типа T скрывает тип T» в методе «перевод»?Java generics: параметр типа 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>(){})
Является ли функция переводить определенную вне интерфейса? – Nessuno
У вас есть конкретный класс/сущность в любом месте с именем 'T'? – berry120
@Nessuno, это должно быть, поскольку интерфейсы не могут иметь тела метода до java 8, который еще не выпущен. И статический интерфейс выглядит неудобно для меня. – svz