Se è necessario utilizzare un Class<T>
come parte di una chiave di un Map
qual è il modo corretto per definire lo e equals
?
Un Class<T>
eredita quelli di Object
che controllano per l'uguaglianza di riferimento e restituire l'indirizzo di memoria come il codice hash, ma nella mia mente non è chiaro che cosa è la definizione di significativo equals
e hashCode
definizione di un Class<T>
.
Devo utilizzare theClass.getClass().hashCode();
ad esempio (dove abbiamo Class<T> theClass;
) per utilizzare i metodi dell'istanza effettiva?
Ma questa non sembra essere la cosa giusta da fare.
Ad esempio nel javadoc per Class<T>
:Come definire in modo significativo hashCode ed equals per un java.lang.Class <T>?
Ogni matrice appartiene ad una classe che si riflette come oggetto Class che è condiviso da tutti gli array con lo stesso tipo di elemento e numero di dimensioni
Quindi sembra che in alcuni casi lo stesso Class<T>
sia condiviso tra gli oggetti? Quindi quale sarebbe il modo di seguire? È possibile utilizzare theClass.hashCode()
e theClass.equals()
per utilizzare l'uguaglianza di riferimento? Non sono affatto sicuro qui.
Non c'è nulla da definire, dal momento che hashcode e gli equals sono già stati implementati, e ho difficoltà a immaginare come e ancora più difficile immaginare il motivo per cui dovresti cambiare quell'implementazione. –
@JensSchauder: Usando Eclipse per generare automaticamente 'hashCode' e' equals' ha dato un avvertimento lamentando che 'hashCode' e' equals' non sono definiti per 'Class'. Questo mi ha fatto preoccupare se si tratta di un avviso valido e io dovrebbe fare qualcosa al riguardo. – Cratylus
Non so cosa stai cercando di fare, ma 'Class' è una classe che fa parte di java stesso. Non puoi implementare nulla per questo. Qual è il nome completo del file sorgente in cui si tenta di aggiungere hashCode ed equals? –