Wie überprüft man, ob eine Klasse equals und hashCode überschrieben hat?

7

Gibt es eine Möglichkeit herauszufinden, ob eine Klasse equals() und hashCode() überschrieben hat?

    
Jabir 26.02.2014, 04:03
quelle

2 Antworten

18

Sie können reflection

verwenden %Vor%

druckt false , wenn hashCode() auskommentiert ist und true , wenn dies nicht der Fall ist.

Method#getDeclaringClass() gibt das Objekt Class für die Klasse zurück, in der es implementiert ist.

Hinweis dass Class#getMethod(..) funktioniert nur für public -Methoden. In diesem Fall müssen equals() und hashCode() jedoch public sein. Der Algorithmus müsste abhängig von anderen Methoden geändert werden.

    
Sotirios Delimanolis 26.02.2014, 04:08
quelle
2

Um zu überprüfen, ob eine Methode in Ihrer Klasse deklariert ist, können Sie den folgenden Code verwenden.

%Vor%

Hier finden Sie den Namen der deklarierenden Klasse.

Überprüfen Sie also anhand des Codes in Ihrer Unterklasse, ob die equals- oder hasCode-Methode verwendet wird. Und passen Sie an, wenn der deklarierende Klassenname mit Ihrer gewünschten Klasse übereinstimmt

    
stinepike 26.02.2014 04:09
quelle

Tags und Links