Wenn ein Class<T>
als Teil eines Schlüssels einer Map
verwendet werden muss, was ist der richtige Weg, um die hashCode
und equals
zu definieren?
A Class<T>
erbt die, die von Object
, die als Referenz Gleichheit überprüfen und gibt die Speicheradresse als Hash-Code, aber es ist nicht klar, was die sinnvolle Definition von equals
und hashCode
Definition eines Class<T>
in meinem Kopf ist.
Sollte ich beispielsweise theClass.getClass().hashCode();
verwenden (wo wir Class<T> theClass;
haben), um die Methoden der tatsächlichen Instanz zu verwenden?
Aber das scheint nicht die richtige Sache zu sein.
zum Beispiel in dem javadoc für Class<T>
:Wie definiert man HashCode und equals für eine java.lang.Class <T>?
Jedes Array zu einer Klasse gehört auch, dass als Klasse Objekt reflektiert wird, die von allen Arrays mit dem gleichen Elementtyp und Anzahl von Dimensionen gemeinsam benutzt wird
So scheint es in einigen Fällen die gleiche Class<T>
ist unter den Objekten geteilt? Also, was wäre der Weg zu folgen? Vielleicht verwenden Sie theClass.hashCode()
und theClass.equals()
Referenzgleichheit zu verwenden? Nicht sicher hier überhaupt.
Es gibt nichts zu definieren, da Hashcode und Equals bereits implementiert sind, und es mir schwer fällt, mir vorzustellen, wie und noch schwieriger es ist, sich vorzustellen, warum Sie diese Implementierung ändern würden. –
@JensSchauder: Mit Eclipse, um 'hashCode' und' equals' automatisch zu generieren, gab es eine Warnung, dass 'hashCode' und' equals' nicht für 'Class' definiert sind. Das hat mich besorgt, ob es eine gültige Warnung ist und ich sollte etwas dagegen tun. – Cratylus
Ich weiß nicht, was Sie zu tun versuchen, aber "Klasse" ist eine Klasse, die selbst Teil von Java ist. Sie können nichts dafür implementieren. Wie lautet der vollständige Name der Quelldatei, in der Sie versuchen, hashCode und equals hinzuzufügen? –