Sie haben nur 7 primitive Typen und einen zu überprüfenden Referenztyp. Wenn Sie alle Zahlentypen zusammen gruppieren, müssen Sie nur nach drei Werten suchen.
%Vor%Sie brauchen keine Reflexion ...
%Vor%Sie könnten jedoch initialisiert und dann auf ihre Standardwerte zurückgesetzt worden sein. Wenn Sie wirklich wissen wollen, ob sie initialisiert wurden, könnten Sie so etwas tun:
%Vor%/ bearbeiten Um alle Felder einer Klasse abzurufen, lesen Sie Class.getDeclaredFields () . Dies gibt jedes Feld, nicht nur die öffentlichen.
Von hier aus können Sie den Typ des Feldes überprüfen und seinen Wert erhalten:
%Vor% Peter Lawreys Antwort funktioniert gut für mich, außer für Felder des primitiven Datentyps char
, was das Folgende aufwirft Ausnahme in meinem Code:
Also habe ich den char
case:
Character.MIN_VALUE
ist '\u0000'
, was der Standardwert von char
laut Java-Dokumentation zu primitiven Datentypen .
Der Kern davon ist:
%Vor%Nun können Sie nur die öffentlichen Felder lesen.
Wenn Ihr Objekt den getX / setX-Namenskonventionen folgt, können Sie alternativ getMethods () verwenden und nach den Methoden "getXxx" und "setXxx" suchen, um die Existenz von einstellbaren Feldern abzuleiten und diese Getter aufzurufen für die erwarteten Standardwerte.
Tags und Links java reflection