Ho un sacco di classi in Java che implementano tutte un'interfaccia chiamata IdObject (che specifica un metodo getId()). Inoltre, tutti implementano anche Comparable <> con se stessi come parametro type, quindi sono tutti paragonabili a se stessi.Java: dichiarazione di variabili con più "vincoli" generici su di esse
Quello che mi piacerebbe fare è dichiarare un elenco di tali oggetti, compilarlo, quindi ordinarlo e chiamare getId() su di essi. Quindi il mio codice è simile al seguente:
List<? extends IdObject & Comparable<?>> objectList = null;
if (foo) {
objectList = new ArrayList<TypeA>();
...
} else if (bar) {
objectList = new ArrayList<TypeB>();
...
}
if (objectList != null) {
Collections.sort(objectList);
for (IdObject o : objectList) {
System.out.println(o.getId());
}
}
Fondamentalmente il mio problema si trova in prima linea - voglio specificare due "vincoli" per il tipo perché ho bisogno il primo a fare in modo che posso stampare l'ID in il ciclo e il secondo per essere sicuro di poter usare Collections.sort() sulla lista.
La prima riga non viene compilata.
C'è un modo per farlo funzionare senza specificare un tipo generico senza parametri di tipo e utilizzando operazioni non controllate? Non ho potuto trovare un esempio di questo su Internet.
Saluti
Avviso: CompIdObject non è dichiarato come generico. – Nicolas