Obiekt final - czy to coś daje?

0

Wiem, że używanie zmiennych final sie przydaje. Kompilator coś takiego:

final int number = 10;
object.method(number);

zamieni na:

object.method(10);

A jak jest z obiektami? Czy zadeklarowanie obiektu jako final coś mi daje?

0

Modyfikator final jest uzywany dla klas, metod i zmienych, wszystko co ma final nie moze byc zmieniane w przszlosci.
Jesli zadeklarujemy final dla klasy oznacza to ze nie mozna tej klasy dziedziczyc.

pozdr.

0

kalvin, to wiem. Pytam się czy to coś daje dla obiektu? Ineresuje mnie to, ponieważ tworzę program z obiektami, które nigdy się nie zmienią po zainicjalizowaniu. Zależy mi na wydajności, wiec się pytam.

0

Jest to wymagane na przyklad gdy twrzysz anonimowa klase zagniezdzaona i chcesz wykorzystac w niej jakas zmienna lokalna jakiegos typu - wtedy musi byc oznaczona jako final.

0

Obiekt, pole inego obiektu, oznaczone jako final nie może być zmienione. i OK. Dokładanie oznacza to że nie może zostać zmieniona referencja do pamięci reprezentowana przez zmienną. Jednocześnie można zmieniać pola obiektu oznaczonego jako final. Obiekty, pola final muszą być inicjowane najpóźniej w konstruktorze.
Przykładowy kod w którym pole finalny jest final, ale jednocześnie można zmienić jego pole

public class ObiektFinal {

    public final Finalny finalny;
    
    public ObiektFinal(){
        this.finalny = new Finalny();
    }
    
    public static void main( String[] args ) {
        ObiektFinal obiektF = new ObiektFinal();
        obiektF.finalny.pole = 10;
        System.out.println(obiektF.finalny.pole);
        obiektF.finalny.pole = 11;
        System.out.println(obiektF.finalny.pole);
    }

}

class Finalny{
    public int pole;
}

Oczywiście nie można zrobić w ten sposób:

this.finalny = new Finalny();

nigdzie poza:

  • deklaracją pola
  • konstruktorem

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