
很多时候,我们会看到 new ArrayList
new ArrayList2、探究(){{ add("小明"); add("小红"); }};
new ArrayList(){};
new ArrayList(){ @Override public boolean add(String s) { return super.add(s); } };
换成这种形式后,就更容易看出来了。new ArrayList
外层花括号研究完毕,我们研究内层的花括号
new ArrayList(){ //构造代码块 { add("小明"); add("小红"); } };
new ArrayList3、结语(){ //构造代码块 { add("小明"); add("小红"); } //重写父类方法 @Override public boolean add(String s) { return super.add(s); } //自己的方法 public void sayHello(){ System.out.println("hello"); } };
之前一直知道这种写法,自己也这么写过。但是始终觉得这种写法很怪异 ,今天终于抽空简单研究一下。原来就是一个匿名内部类加一个构造代码块。