Sto cercando di imparare Java Generics e ho trovato il seguente codice.Si verificano errori durante la chiamata alla stampa (Elenco <T> a, T b) con diversa classe T
public static <T> void print(T a, T b){
System.out.println(a);
System.out.println(b);
}
public static void main(String[] args){
print(new ArrayList<String>(), 1);
}
Che funziona senza problemi.
Tuttavia, quando cambio il metodo print
nel modo seguente, vengono visualizzati errori di compilazione.
public static <T> void print(List<T> a, T b){
System.out.println(a);
System.out.println(b);
}
Errore:
GenericTest.java:9: error: method print in class GenericTest cannot be applied to given types;
print(new ArrayList<String>(), 1);
^
required: List<T>,T
found: ArrayList<String>,int
reason: no instance(s) of type variable(s) T exist so that argument type int conforms to formal parameter type T
where T is a type-variable:
T extends Object declared in method <T>print(List<T>,T)
1 error
Qualcuno può aiutarmi a capire gli errori?
si può spiegare anche il motivo per cui è deliberato di 'Serializable' e non qualsiasi altro tipo super-comune? – Codebender
@Codebender Perché è il tipo super comune più vicino tra 'ArrayList' e' Integer'. 'Object' sarebbe un livello in alto nella gerarchia. – Tunaki
Non capisco come si forma la gerarchia tra Interfaccia e Classe (farò una nuova domanda al riguardo), ma eclissi mostra che è stato risolto in Serializable (+1 per quello) ... – Codebender