Mam pewne problemy z metodą posiadającą wpisany parametr listy, dziedziczony z innej (wpisanej) klasy.Metoda z wpisaną listą i dziedziczeniem
Trzymajmy go prosta:
public class B<T> {
public void test(List<Integer> i) {
}
}
Klasa B ma bezużyteczną rodzajowego T, oraz test() ma Listę Integer.
Teraz jeśli mam zrobić:
public class A extends B {
// don't compile
@Override
public void test(List<Integer> i) {
}
}
dostaję "Test metodą (List) typu A należy zastąpić lub wdraża metodę supertypem" błąd, że nie powinno się zdarzyć.
Ale usunięcie typu listy działa ... chociaż nie zależy od klasy ogólnej.
public class A extends B {
// compile
@Override
public void test(List i) {
A także definiowanie bezużyteczne generic poniżej, aby użyć wpisanie z klawiatury
public class A extends B<String> {
// compile
@Override
public void test(List<Integer> i) {
więc mam pojęcia, rodzajowy B powinny mieć żadnego wpływu na rodzaj testu() listy. Czy ktoś ma pojęcie o tym, co się dzieje?
Dzięki
Wierzę, że twoja odpowiedź leży [tutaj] (http://stackoverflow.com/a/502770/248082). – nobeh
Konwencjonalnie [kapitał V] 'Void' jest używany do ogólnych parametrów, których nie chcesz używać. Na przykład przy użyciu 'java.security.PreivilegedAction' bez zwracania wartości (return' null' - jest to jedyne poprawne odniesienie 'Void'). –