我该怎么解释这个关于Java中的Initializer的陈述?

时间:2016-12-17 05:07:16

标签: java

我在某些地方看到了这段代码。

new ArrayList<String>(){{
   add("A");
   add("B");
}}

我应该如何解释这段代码? 有人说这是Instance Initializer。但是,在我对Instance Initializer的理解中,它被用在一个类中以避免重复,特别是在它的构造函数中。 这意味着

public class Test1 {
    int number;

    public Test1() {
        System.out.println("1");
        this.number = 1;
    }

    public Test1(int i) {
        System.out.println("1");
        this.number = i;
    }
}

通常比

更糟糕
public class Test2 {
    int number;

    {System.out.println("1");}

    public Test2() {
        this.number = 1;
    }

    public Test2(int i) {
        this.number = i;
    }
}

所以,我认为Java中的Instance Initializer归因于一个特定的类,但也许很多人以我首先展示的方式使用这样的Instance Initializer。 并且初始化程序不属于某个类。 所以我有点困惑。 任何人都可以对第一个代码给出任何好的解释吗?

0 个答案:

没有答案