статический блок и закрытый статический метод для инициализации статического члена

Статические переменные могут быть инициализированы приватными статическими методами или статическим блоком. Есть ли какая-то тонкая разница между ними? Есть ли ситуации, когда я не могу использовать статический метод для инициализации статических элементов? Я нашел более поздний более читабельным.

Инициализация статического блока:

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, а также переменных )? Даже из этой темы я узнал, что приватные статические методы имеют преимущество перед статическими блоками.

спасибо,

11
задан Community 23 May 2017 в 12:32
поделиться