关于java:填充ArrayList的另一种方法

Another way for fill a ArrayList

本问题已经有最佳答案,请猛点这里访问。

它为什么有效? 请帮我解释一下如何以及为什么!

1
2
3
4
5
6
7
8
9
10
List<String> list = new ArrayList<String>() {
    {
        add("one");
        add("two");
        add("three");
    }
};

for ( String element : list )
    System.out.println(element);


这意味着您创建了一个扩展arraylist的类并添加了一个静态块。

1
2
3
4
5
6
7
8
9
List<String> list = new ArrayList<String>(){};  // At this step you have created an instance of an anonymus class assigned to the list varibale

new ArrayList<String>() {
        {
        add("one");
        add("two");
        add("three");
        } // This is a static block inside your newly created anonymus class.
};