我想了解这叫什么。我在oracle网站上看到了这个程序。我保留了断点,并且在静态块之后和构造函数被调用之前看到了这个语句。
这一陈述的重要性是什么?
{
System.out.print("y ");
}
在此代码中:
public class Sequence {
Sequence() {
System.out.print("c ");
}
{
System.out.print("y ");
}
public static void main(String[] args) {
new Sequence().go();
}
void go() {
System.out.print("g ");
}
static {
System.out.print("x ");
}
}
答案 0 :(得分:1)
static {
System.out.print("x ");
}
它是静态块,只要加载了类就调用它。一般而言,没有匿名类名称的匿名方法是没有任何名称的clases,它们的实现是在需要它的地方提供的,不能重复使用
{
System.out.print("y ");
}
正如Eran所评论的那样,It's an instance initialization block, and it's executed whenever an instance is created
甚至在构造函数之前被调用。
答案 1 :(得分:0)
这是一个初始化程序块。只要创建了一个新的类实例,就会执行它。大多数情况下你并不真正需要它,因为实例初始化也可以放在构造函数中。初始化块主要用于初始化匿名内部类,您无法为其定义自己的构造函数(因为要定义构造函数,您需要类的名称)。
答案 2 :(得分:0)
这称为静态初始化块或静态初始化程序。
请参阅:https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html
就个人而言,我不想完全按照我选择的文件中所述的原因使用它们。
有静态块的替代方法 - 您可以编写私有块 静态方法:私有静态方法的优点是它们 如果你需要重新初始化类变量,可以在以后重用。