可能的重复:
静态初始化块
考虑以下code:
public class Test {
{
System.out.println("Empty block");
}
static {
System.out.println("Static block");
}
public static void main(String[] args) {
Test t = new Test();
}
}
我们明白,首先static块将被执行,然后是empty堵塞。但问题是我一直没能理解一个东西的真正用处。empty堵塞。谁能举一个真实的例子 -
- Both static and empty正在使用块
- Both static and empty块有不同的效用
它们有两个截然不同的目的:
- 静态初始化块将在类加载时调用,并且无法访问实例变量或方法。根据 @Prahalad Deshpande 的评论,它通常用于创建静态变量。
- 另一方面,非静态初始化块仅在对象构造时创建,将有权访问实例变量和方法,并且(根据 @EJP 建议的重要更正)将在构造函数的开头、在超级构造函数已被调用(显式或隐式)并且before调用任何其他后续构造函数代码。我见过当一个类有多个构造函数并且需要为所有构造函数调用相同的初始化代码时使用它。就像构造函数一样,您应该避免在此块中调用非最终方法。
请注意,这个问题已经在 stackoverflow 中得到了多次回答,您最好搜索并查看类似的问题及其答案。例如:静态初始化块
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)