这篇是对上一篇文章的补充,有种初始化是匿名类初始化,我们这里就来比较下。
import java.util.ArrayList; import java.util.List; // public class InnerClass { // public void initList() { Listl = new ArrayList (); l.add("Hello"); l.add("World!"); } // public void initInnerList() { List l = new ArrayList () { { add("Hello"); add("World!"); } }; } }
initInnerList方法中l的初始化是在{}中,接下来我们直接看反编译后的代码
initInnerList方法中初始化代码没有了,另外多了个class。 真没有了吗?实际上调用了匿名类的构造方法来初始化,呵呵。
InnerClass$1构造方法不需要多介绍了吧,可以看上一篇博客。
----------------------------------------------------------------
这里有篇不错的文章,推荐下。 Efficiency of Java “Double Brace Initialization”? http://stackoverflow.com/questions/924285/efficiency-of-java-double-brace-initialization