Tengo un montón de clases en java que implementan una interfaz llamada IdObject (que especifica un método getId()). Además, también implementan Comparable <> consigo mismos como parámetro de tipo, por lo que son todos comparables a ellos.Java: declarando variables con múltiples "restricciones" genéricas en ellos
Lo que me gustaría hacer es declarar una lista de dichos objetos, completarla, luego ordenarla y llamar a getId() sobre ellos. Así que mi código es el siguiente:
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());
}
}
Básicamente mi problema radica en la primera línea - Quiero especificar dos "limitaciones" para el tipo porque necesito el primero para asegurarse de que pueda imprimir el ID de el ciclo y el segundo para asegurarme de que pueda usar Collections.sort() en la lista.
La primera línea no se compila.
¿Hay alguna manera de hacer que esto funcione sin especificar un tipo genérico sin parámetros de tipo y utilizando operaciones no verificadas? Tampoco podría encontrar un ejemplo de esto en Internet.
Saludos
Advertencia: Su CompIdObject no está declarado como genérico. – Nicolas