静态块与静态成员初始化的私有静态方法

Moh*_*han 11 java methods static-methods

可以使用私有静态方法或使用静态块初始化静态变量.这两者之间有什么微妙的区别吗?有没有我不能使用静态方法初始化静态成员的情况?我发现后者更具可读性.

静态块初始化:

private static int NUM_ITER;
static {
    // Operations
    NUM_ITER = //val from above operations.
}
Run Code Online (Sandbox Code Playgroud)

私有静态方法初始化:

private static int NUM_ITER = calculateNumIter();

// Some method comment on how we are calculating.
private static int calculateNumIter()
{
    // Operations.
    return //value_from_operations.
}
Run Code Online (Sandbox Code Playgroud)

我更喜欢第二个,因为它更具可读性.有没有我必须先使用的情况(静态块)?

初始化静态成员(最终成员和变量成员)的最佳编码约定/设计是什么?即使从这个线程我学习私有静态方法也比静态块有优势.

谢谢,

Kum*_*tra 1

  1. static Initializerblock(您的选项 1)在 JVM 加载类时执行,甚至在任何变量初始化之前执行。static

  2. 它是同时拥有所有静态变量的好地方。

  3. 您可以选择使用第二个选项,通过将多个参数传递给初始化方法的参数来初始化多个变量。 static