Ich bin kürzlich darauf gestoßen, wie nützlich unveränderliche Objekte sind und dass Sie, wenn Sie z. B. Elemente an einen Konstruktor übergeben und Ihre Klasse unveränderlich sein soll, diese Elemente kopieren müssen, wenn sie selbst nicht unveränderlich sind.
Dies erfordert viel Überprüfung oder Wissen über mein Projekt, denn wenn ich habe
public A(B foo)
und B
ist nicht unveränderlich, A
ich müsste kopieren B
. Stellen Sie sich jetzt vor, dass dies B
unveränderlich ist, aber selbst veränderbare Klassen im Konstruktor usw. hat.
Gibt es einen Standard oder eine bewährte Methode, um zu dokumentieren, ob eine Klasse in Java unveränderlich ist? Es scheint, dass es @immutable
in Javadoc kein Schlüsselwort gibt .
Die Annotation @Immutable scheint für die automatische Klassengenerierung etwas völlig anderes zu sein und nicht Teil von Standard-Java.
quelle
Antworten:
Schauen Sie sich die Dokumentation der
String
Klasse an (Fettdruck habe ich gemacht):Wie Sie sehen, gibt es keine bestimmten Beschriftungen oder andere Markierungen. In JavaDoc wird jedoch angegeben, dass die
String
Klasse ein konstantes, unveränderliches Objekt darstellt.Unter der Annahme, dass Sie die Anweisungen in diesem Oracle-Lernprogramm befolgt haben , um eine unveränderliche Klasse zu erstellen, und um sicherzustellen, dass die Unveränderlichkeit der Klasse dokumentiert ist, sollten Sie nur darauf achten, dass Sie im JavaDoc die Beschreibung der Klasse und deren Inhalt angeben tut.
Wenn das immer noch nicht passt , was Sie brauchen, können Sie einen Blick darauf werfen, wie Sie benutzerdefinierte JavaDoc Tags bauen könnten hier .
quelle
Sie können Anmerkungen verwenden:
@ javax.annotation.concurrent.Immutable from JSR-305
oder @ net.jcip.annotations.Immutable von Java Concurrency In Practice
quelle