Блоки статической инициализации

Для инициализации объекта существует конструктор, который вызывается в момент создания объекта. А для инициализации класса существуют блоки статической инициализации, которые выполняются при загрузке класса. В них можно задать данные, которые влияют на работу всего класса.

package online.javanese.basics.oop.clinit;

import java.util.Date;
import java.util.Random;

public class Example {

    private static final long LOADED_AT = System.currentTimeMillis();
    private static final long RANDOM_VALUE;
    static {
        long random = 42 * new Random().nextLong();
        RANDOM_VALUE = random * LOADED_AT;
    }

    public static void main(String[] args) {
        System.out.println("Класс загружен " + new Date(LOADED_AT));
        System.out.println("В этот раз ответ на все вопросы — " + RANDOM_VALUE);
    }

}
Класс загружен Sun Sep 11 17:44:10 MSK 2016
В этот раз ответ на все вопросы — 7119464146548630464
Комментарии к уроку

Сообщить об ошибке