odczyt pliku a praca z obiektem

0

Mam pytanie, jak się zapatrujecie na inicjalizację zmiennej poprzez blok statyczny?

    static {
        fileConfig = new File("name.ext");
        //rest of the code, and BufferedReader initialization 

    }

czy to była by dobra praktyka? oczywiscie mozna by od razu zauważyć iż nazwe pliku fajnie było by podać przez konstruktor więc załóżmy, że była by niezmienna.
oczywiście jeśli już mam ten blok to inicjalizuje sobie również inne pola. Tylko tu ponawiam pytanie, Czy jest to warte zachodu? Pisałem to tak by nie zdarzyło się gdzieś w programie jaki i w samej klasie kilkukrotne wywołanie co by powodowało cały czas np. odczyt pliku który i tak nie jest modyfikowany w międzyczasie.

0

Dlaczego właściwie nie przypiszesz wartości od razu do zmiennej tylko w bloku static?

Pola statyczne w większości przypadków służą jako stałe, tak jak u Ciebie. Więc o ile dobrze rozumiem problem to dodaj modyfikator final + nazwa z dużych liter i zrób zwykłe przypisanie.

0

Praktyka słaba i zła. Trudno się to potem testuje, szczególnie bez Powermockowej magii w stylu "suppress static initialization". Są lepsze pomysły na zrobienie singeltona.

0

tyle że za każdym razem gdy zostanie utwożony obiekt klasy również wykonają się pozostałe metody i inicjalizacje. niechciałbym aby coś robiło się w kółko niepotrzebnie jeśli może się zrobić raz. Nie wiem tylko czy to jest Normalne podejście. Blok statyczny ma taką ciekawą funkcjonalność, że jest wykonywany tylko raz dla danej klasy nie ważne ile razy ją wykonamy, do czasu aż GC go nie usunie.

0
Shalom napisał(a):

Praktyka słaba i zła. Trudno się to potem testuje, szczególnie bez Powermockowej magii w stylu "suppress static initialization". Są lepsze pomysły na zrobienie singeltona.

A no to dzięki :)

0

W takim razie użyj właśnie wzorca Singleton. Inicjalizację robisz po ludzku w konstruktorze prywatnym.

http://pl.wikipedia.org/wiki/Singleton_(wzorzec_projektowy)

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