У меня проблемы с методом, имеющим типизированный параметр List, унаследованный от другого (типизированного) класса.
Давайте будем простыми:
public class B<T> {
public void test(List<Integer> i) {
}
}
Класс B имеет бесполезный общий T, а test () хочет целочисленный список.
Теперь, если я это сделаю:
public class A extends B {
// don't compile
@Override
public void test(List<Integer> i) {
}
}
Я получаю ошибку «Тест метода (список) типа A должен переопределить или реализовать метод супертипа», чего не должно происходить.
Но удаление типа списка работает ... хотя это не зависит от универсального класса.
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 не должен влиять на тип списка test (). Кто-нибудь имеет представление о том, что происходит?
Спасибо
Void
используется для общих параметров, которые вы не хотите использовать. Например, который используетjava.security.PreivilegedAction
без возврата значения (returnnull
- это единственная действительная ссылкаVoid
). - person Tom Hawtin - tackline   schedule 28.06.2012