Ho alcuni problemi con un metodo che ha un parametro List tipizzato, ereditato da un'altra classe (tipizzata).Metodo con lista ed ereditarieta digitata
teniamolo semplice:
public class B<T> {
public void test(List<Integer> i) {
}
}
La classe B ha un T inutile generica, e test() vuole un elenco di numeri interi.
Ora, se faccio:
public class A extends B {
// don't compile
@Override
public void test(List<Integer> i) {
}
}
ottengo "Il metodo di prova (List) di tipo A deve avere la priorità o di implementare un metodo supertipo" l'errore, che non dovrebbero accadere.
Ma la rimozione del tipo di elenco funziona ... anche se non dipende dalla classe generica.
public class A extends B {
// compile
@Override
public void test(List i) {
E anche definire l'inutile generica di seguito per utilizzare l'elenco digitato
public class A extends B<String> {
// compile
@Override
public void test(List<Integer> i) {
Quindi sono all'oscuro, il generico di B dovrebbe avere alcuna influenza sul tipo di l'elenco dei test(). Qualcuno ha un'idea di cosa sta succedendo?
Grazie
Credo che la tua risposta stia [qui] (http://stackoverflow.com/a/502770/248082). – nobeh
Convenzionalmente [V maiuscola] 'Void' viene utilizzato per i parametri generici che non si desidera utilizzare. Ad esempio, che utilizza 'java.security.PreivilegedAction' senza restituire un valore (restituisce' null' - è l'unico riferimento 'Void' valido). –