在声明时初始化静态变量与在静态块中初始化静态变量有什么区别?
What is the difference between initializing a static variable when it is declared vs initializing it in a static block?
我在下面 link 的服务定位器设计模式指南的第 5 步中找到了这种用法
https://www.tutorialspoint.com/design_pattern/service_locator_pattern.htm
我不明白他们为什么使用这种结构。
public class ServiceLocator {
private static Cache cache;
static {
cache = new Cache();
}
}
对
private static Cache cache = new Cache();
在此特定实例中,结果完全相同。如果您需要应用更多逻辑而不仅仅是简单的字段初始化,则可以使用静态块。
如果您的目标是提高代码的可读性,您应该只初始化一个静态变量:
private static Cache cache = new Cache();
我在下面 link 的服务定位器设计模式指南的第 5 步中找到了这种用法 https://www.tutorialspoint.com/design_pattern/service_locator_pattern.htm
我不明白他们为什么使用这种结构。
public class ServiceLocator {
private static Cache cache;
static {
cache = new Cache();
}
}
对
private static Cache cache = new Cache();
在此特定实例中,结果完全相同。如果您需要应用更多逻辑而不仅仅是简单的字段初始化,则可以使用静态块。
如果您的目标是提高代码的可读性,您应该只初始化一个静态变量:
private static Cache cache = new Cache();