java匿名语句或它叫什么?

时间:2015-08-02 15:28:30

标签: java

我想了解这叫什么。我在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 ");
    }
}

3 个答案:

答案 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

就个人而言,我不想完全按照我选择的文件中所述的原因使用它们。

  

有静态块的替代方法 - 您可以编写私有块   静态方法:私有静态方法的优点是它们   如果你需要重新初始化类变量,可以在以后重用。