Ostatnio natknąłem się na to, jak przydatne są niezmienne obiekty i że np. Jeśli przekazujesz elementy do konstruktora, a twoja klasa powinna być niezmienna, musisz skopiować te elementy, jeśli same nie są niezmienne.
Wymaga to dużej ilości sprawdzania lub wiedzy na temat mojego projektu, ponieważ jeśli mam
public A(B foo)
i B
nie jest niezmienny, A
musiałbym skopiować B
. Teraz wyobraź sobie, B
że wydaje się niezmienny, ale sam ma zmienne klasy w konstruktorze i tak dalej.
Czy istnieje standard lub najlepsza praktyka dokumentowania, jeśli klasa jest niezmienna w Javie? Wygląda na to, że @immutable
w Javadoc nie ma słowa kluczowego.
@Immutable adnotacja wydaje się być czymś zupełnie inna dla generacji klasy auto i nie jest częścią standardu Java.
java
documentation
immutability
Aufziehvogel
źródło
źródło
Odpowiedzi:
Patrząc na dokumentację
String
klasy (zrobiłem pogrubiony tekst):Jak widać, nie ma żadnych specjalnych etykiet ani innych znaczników, jednak w JavaDoc określają klasę, że
String
klasa reprezentuje stały, niezmienny obiekt.Tak więc, zakładając, że postępowałeś zgodnie z instrukcjami zawartymi w tym samouczku Oracle, aby stworzyć niezmienną klasę, aby upewnić się, że niezmienność klasy jest udokumentowana, powinieneś tylko upewnić się, że wspomniałeś w niej w JavaDoc opisującym klasę i co to jest robi.
Jeśli to nadal nie pasuje do tego, co trzeba, można przyjrzeć się w jaki sposób można budować niestandardowe znaczniki javadoc tutaj .
źródło
Możesz użyć adnotacji:
@ javax.annotation.concurrent.Immutable z JSR-305
lub @ net.jcip.annotations.Imutable from Java Concurrency In Practice
źródło