Java 静态成员初始化的静态块与私有静态方法
静态变量可以用私有静态方法或静态块初始化。两者之间有细微的区别吗?是否存在无法使用静态方法初始化静态成员的情况?我发现后者更具可读性 静态块初始化:Java 静态成员初始化的静态块与私有静态方法,java,methods,static-methods,Java,Methods,Static Methods,静态变量可以用私有静态方法或静态块初始化。两者之间有细微的区别吗?是否存在无法使用静态方法初始化静态成员的情况?我发现后者更具可读性 静态块初始化: private static int NUM_ITER; static { // Operations NUM_ITER = //val from above operations. } 私有静态方法初始化: private static int NUM_ITER = calculateNumIter(); // Some me
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.
}
我更喜欢第二本,因为它更可读。是否有任何情况我必须首先使用(静态块)
初始化静态成员(最终成员和变量成员)的最佳编码约定/设计是什么?即使从这一点上,我也了解到私有静态方法比静态块有优势
谢谢,如果两个不同的变量相互依赖并且不能独立初始化,那么静态块是必要的(或者至少是有用的) 例如,假设您需要从一个文件中读取两个值。您可以将这两个值存储在另一个对象中。但是如果你真的想要两个常量,静态块是很有用的
静态初始值设定项
块(您的1选项)在JVM加载类时执行,甚至在任何静态
变量初始化之前执行静态
变量我建议使用任何保持代码干净可读的语法:
- 如果初始化达到一行,最多两行,非常简单的代码,那么使用静态块
- 如果初始化是一个复杂的操作,那么最好使用一个好名字的方法
- 如有疑问,请使用方法语法和方法名称不仅声明哪个变量,还声明初始化方式(即initializeValueWithRandomNumber())