Код: Выделить всё
public class Constants extends SomeBaseClass {
// init() is defined in some base class...
public static final XXX KEY1 = init(...);
public static final XXX KEY2 = init(...);
public static final XXX KEY3 = init(...);
// ...
public static final XXX KEY2000 = init(...);
}
Код: Выделить всё
public class Constants extends SomeBaseClass {
public static XXX KEY1;
public static XXX KEY2;
public static XXX KEY3;
// ...
public static XXX KEY2000;
static {
initialise0001To1000();
initialise1001To2000();
}
private static void initialise0001To1000() {
KEY1 = init(...);
KEY2 = init(...);
KEY3 = init(...);
// ...
}
private static void initialise1001To2000() {
// ...
KEY2000 = init(...);
}
}
Недостаток этого решения заключается в том, что я больше не могу объявлять константы как окончательные, поскольку они больше не инициализируются непосредственно в статическом инициализаторе.
Недостаток этого подхода в том, что я больше не могу объявлять константы как окончательные, поскольку они больше не инициализируются непосредственно в статическом инициализаторе.
Недостаток этого решения заключается в том, что я больше не могу объявлять константы как окончательные, поскольку они больше не инициализируются непосредственно в статическом инициализаторе.
Недостаток этого решения заключается в том, что я больше не могу объявлять константы как окончательные, поскольку они больше не инициализируются непосредственно в статическом инициализаторе.
p>
Мой вопрос: как я могу обойти это ограничение компилятора/JVM, чтобы по-прежнему генерировать статические конечные константы?
Подробнее здесь: https://stackoverflow.com/questions/108 ... initialisi
Мобильная версия