У меня есть некоторые проблемы с методом с типизированным параметром List, унаследованным от другого (типизированного) класса.Метод с типизированным списком и наследованием
Давайте держать это просто:
public class B<T> {
public void test(List<Integer> i) {
}
}
Класс B имеет бесполезный общий T и тест() требуется в список Integer.
Теперь, если я:
public class A extends B {
// don't compile
@Override
public void test(List<Integer> i) {
}
}
Я получаю "Тест метод (List) типа A должен переопределить или реализовать метод Supertype" ошибка, что не должно произойти.
Но удаление типа списка работает ... хотя оно не зависит от общего класса.
public class A extends B {
// compile
@Override
public void test(List i) {
А также определение бесполезного родового ниже, чтобы использовать типизированный лист
public class A extends B<String> {
// compile
@Override
public void test(List<Integer> i) {
Так что я невежественный, родовые из B не должны иметь никакого влияния на типе списка теста(). Кто-нибудь имеет представление о том, что происходит?
Благодаря
Я считаю, что ваш ответ лежит [здесь] (http://stackoverflow.com/a/502770/248082). – nobeh
Обычно [capital V] 'Void' используется для общих параметров, которые вы не хотите использовать. Например, с использованием 'java.security.PreivilegedAction' без возврата значения (return' null' - это единственная действительная ссылка Void). –