Tengo un Map
cuyas claves son del tipo genérico Key<T>
, y los valores son del tipo List<T>
. Si la clave es una instancia de Key<String>
, el valor debe ser List<String>
, y la misma regla se aplica a cualquier otro par clave-valor. He intentado lo siguiente pero no se compila:¿Cómo declarar un mapa con genéricos variables?
Map<T, List<T>> map;
En la actualidad tengo que declarar que con los genéricos "parciales":
Map<Object, List> map;
Sé que esto es malo, pero actualmente no tengo ninguna opción mejor . ¿Es posible usar medicamentos genéricos en esta situación?
ACTUALIZACIÓN
Tal vez no expresara mi problema con claridad. Quiero un mapa que es capaz de:
map.put(new Key<String>(), new ArrayList<String>());
map.put(new Key<Integer>(), new ArrayList<Integer>());
Y el siguiente código no debe compilar:
map.put(new Key<String>(), new ArrayList<Integer>());
La clave y el valor siempre deben tener el mismo tipo genérico, mientras que el tipo genérico puede ser cualquiera, y obviamente extender un mapa no cumple con mis requisitos.
espacio no debería ser el problema. Es probable la forma en que se usa. OP necesita mostrar más código para corregir. – Nishant
¿Está utilizando claves de tipo 'T', o teclas de tipo' Key'? –
Con su escenario real, debe usar la encapsulación para resolver su problema, como Nishant y Geoff declaran en sus respuestas, simplemente adaptarlo a su código real. –