Wie kann unveränderliche Klasse in Java erstellt werden. Wenn die Klasse Student eine Beziehung (Adresse) zum Erstellen einer unveränderlichen Klasse hat. Ich möchte die Klasse unten unveränderlich machen
%Vor%Hier können wir Adressinstanzen ändern. Bitte gib mir eine Idee
Die wichtigsten Punkte für unveränderlich sind:
equals()
und hashcode()
). In deiner Klasse Address
solltest du deine Felder private
(sollte) und final
(muss), wie dies -
Sie können auch keine Setter-Methoden verwenden, aber wenn die Felder final sind, ist das kein großes Problem (da jede Setter-Methode einen Compilerfehler ergeben würde).
Nun, du hast Student halbwegs unveränderlich gemacht:
Sie sollten dasselbe auf Address
class anwenden, damit es unveränderlich wird, und dann wird der gesamte Status von Student
unveränderlich sein. So wird es sein:
Glücklicherweise haben Sie keine modifizierbaren Typen (einige der bekanntesten sind Date
, Collection
s und Maps
), ansonsten sollten Sie sie auch berücksichtigen.
Wenn Sie veränderbare Attribute hatten, müssen Sie sie im Konstruktor kopieren, und Sie sollten eine unmodifizierbare oder eine Kopie davon zurückgeben, wenn der Zustand undicht ist.
Wenn Ihre Student
-Klasse zum Beispiel ein birthDate
-Attribut hat, sollten Sie etwas tun wie:
Das ist genug. final
deklariert kann nicht mutiert werden und da Getter im Konstruktor als Argumente benötigt werden, sind Getter redundant.
address
und studentId/id
wären jedoch bessere Namen für die Felder.
Tags und Links java