Ho un Map
le cui chiavi sono di tipo generico Key<T>
e i valori sono di tipo List<T>
. Se la chiave è un'istanza di Key<String>
, il valore deve essere un List<String>
e la stessa regola si applica a qualsiasi altra coppia chiave-valore. Ho provato quanto segue ma non viene compilato:Come dichiarare una mappa con generici variabili?
Map<T, List<T>> map;
Attualmente devo dichiarare che con i generici "parziali":
Map<Object, List> map;
So che questo è male, ma io al momento non hanno alcuna scelta migliore . È possibile utilizzare i generici in questa situazione?
UPDATE
Forse non ha espresso chiaramente il mio problema. Voglio una mappa che è in grado di:
map.put(new Key<String>(), new ArrayList<String>());
map.put(new Key<Integer>(), new ArrayList<Integer>());
E il seguente codice non dovrebbe compilare:
map.put(new Key<String>(), new ArrayList<Integer>());
La chiave e il valore dovrebbe sempre avere lo stesso tipo generico, mentre il tipo generico può essere qualsiasi, e ovviamente estendere una mappa non soddisfa il mio requisito.
spazio non dovrebbe essere il problema. È probabilmente il modo in cui viene utilizzato. L'OP deve mostrare più codice da riparare. – Nishant
Si stanno usando i tasti di tipo 'T', o i tasti di tipo' Chiave '? –
Con il tuo scenario attuale, dovresti usare l'incapsulamento per risolvere il tuo problema come affermano Nishant e Geoff nelle loro risposte, basta adattarlo al tuo codice reale. –