Modyfikator 'final'

0

Wyczytałem gdzieś, że jeżeli coś jest oznaczone jako 'final', to jest inaczej(nie znam się) traktowane przez tą całą maszynę Java, że jest bardziej wydajne.Czyli najlepiej tam gdzie mogę, to mam wciskać 'final'? Coś nie mogłem znaleźć informacji w internetach... :P

2

Teoretycznie takie zmienne mogłyby być inaczej traktowane - nie trzeba ich odczytywać z pamięci, można je trzymać w cache po jednym pobraniu, są bezpieczne między wątkami
W praktyce nie ma żadnych korzyści od strony szybkości działania, ale dobrą praktyką jest trzymanie wszystkiego co się da jako final - można takie zmienne wykorzystywać w klasach zagnieżdżonych, poza tym obiekty ogólnie powinny być immutable - to pozwala właśnie na bezpieczną wielowątkowość i wprowadza mniej bugów w kodzie - czasem pobierze się instancje jakiegoś obiektu z gettera i zmieni się jego właściwość całkowicie gdzieś indziej nie myśląc że to przecież ta sama instancja; obiekty immutable zabezpieczają przed tego typu pomyłkami

Tu znalazłem trochę więcej o tym zagadnieniu: https://stackoverflow.com/questions/4279420/does-use-of-final-keyword-in-java-improve-the-performance
Jak się okazuje w niektórych przypadkach daje to wzrost wydajności, ale stosować warto niezależnie od tego

2

Ogolnie wszystko ok, poza:

Świetny Mleczarz napisał(a):

...można je trzymać w cache po jednym pobraniu...

Nie chodzi o trzymanie w cache, tylko w rejestrze procesora.

1 użytkowników online, w tym zalogowanych: 0, gości: 1