Jeśli mam następujące oświadczenie w klasie gdzie Synapse
jest typem streszczenie:Deklarowanie pole listy z końcowym słowa kluczowego
private final List<Synapse> synapses;
Czy final
pozwala mi nadal być w stanie zmienić stan Synapse
obiektów w List
, ale uniemożliwić dodanie do listy nowych obiektów Synapse
? Jeśli się mylę, czy mógłbyś wyjaśnić, co robi final
i kiedy powinienem zamiast tego używać słowa kluczowego final
.
Warto zwrócić uwagę, że choć nic nie może być dodane, usunięte lub zastąpione w 'unmodifiableList' skonstruowany tak, elementy listy można jeszcze ich stan zmienić (jeśli są one zmienny). Nic o deklaracji listy lub konstrukcji nie może temu zapobiec. –
Więc możesz zrobić: 'final List synapses = createList();' a następnie zrobić 'synapses.add (newSynapse())'? Oznacza to, że 'synaps 'nie może wskazywać na nic innego poza tą listą? –
@ A.Vieira tak, tak, o ile 'synapses' jest zmiennym obiektem takim jak ArrayList. –