Предположим, у меня есть такой класс
public class Foo
{
public static final String FIELD_1 = Env.getProperties("one");
public static final String FIELD_2 = Env.getProperties("one");
//....
public static final String FIELD_N = Env.getProperties("n");
}
Очевидно, все FIELD_*
заполняются, когда мы впервые ссылаемся на Foo
. Предположим, мой Env.getProperties(String)
не является чисто функциональным (т. Е. Он может возвращать разные значения. Каким образом? Здесь не важно)
Как мне заставить класс Foo
быть "перезагруженным", чтобы весь код инициализации класса был повторно выполнен (просто чтобы я мог иметь разные значения для статических полей)?
(По разным причинам я не могу сделать эти поля нестатическими или нефинальными. Поэтому, пожалуйста, не предлагайте таких решений, как сделать Foo интерфейсом с различными методами получения, которые должны быть переопределены)
Спасибо