Java - klasy statyczne

0

Witam.
Mam pytanie odnośnie klas statycznych.
Mam np. jakąś klasę statyczną:

public class Klasa {
       private static final Reader read = new Reader();
       public static final pole  = read.pole();
       public static final pole1 = read.pole1();
      
       public static void metoda() {
           .....
        }

}

Czy metody "read" (czyli pobieranie wartosci) wywoływane są przy każdym odwołaniu do klasy?

0

Nie. Pola są dodatkowo final, zatem nie było by możliwości przypisania wartości po raz kolejny. Wywołanie metody następuje w momencie ładowania klasy przez classloader. Pole przechowuje wartość zwrócona przez metodę, a nie referencję do metody.

0

Ok. Rozumiem. Zastanawiam się dlaczego w Groovy mogę np. zmienić pole "file" metodą "setParametersFile"

class GPathReader {
    private static final file
    
    private static final INSTANCE = new GPathReader()
    static GPathReader getInstance(){ return INSTANCE }

    private GPathReader() {} 
    
    public setParametersFile(String file) {
        this.file = file
    }
}

Dalej robię tak:

GapthReader gpath = GpathReader.getInstance();
gpath.setParametersFile("plik.txt");
0

Bo groovy jest dynamiczny jak diabli i dość mocno korzysta z różnych sztuczek związanych z refleksją ignorując przy okazji modyfikatory :) Ot taki mały myk.

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