Статические переменные могут быть инициализированы приватными статическими методами или статическим блоком. Есть ли какая-то тонкая разница между ними? Есть ли ситуации, когда я не могу использовать статический метод для инициализации статических элементов? Я нашел более поздний более читабельным.
Инициализация статического блока:
private static int NUM_ITER;
static {
// Operations
NUM_ITER = //val from above operations.
}
Инициализация частного статического метода:
private static int NUM_ITER = calculateNumIter();
// Some method comment on how we are calculating.
private static int calculateNumIter()
{
// Operations.
return //value_from_operations.
}
Я предпочитаю второй, так как он более читабелен. Есть ли ситуация, в которой я должен использовать только первые (статические блоки )?
Каково наилучшее соглашение/дизайн кодирования для инициализации статических членов (final, а также переменных )? Даже из этой темы я узнал, что приватные статические методы имеют преимущество перед статическими блоками.
спасибо,