| 
 
| 这里着重介绍一下双括号初始化(double brace initialization)技巧 
 假设我们想构造一个数组列表,并将它传给某个方法:
 
 ArrayList<String> friends = new ArrayList<>();
 friends.add("Harry");
 friends.add("Tony");
 invite(friends);
 
 若这个friends数组之后不会再使用的话,我们可以把它构造成一个匿名列表:
 
 invite(new ArrayList<String>(){{add("Harry");add("Tony");}});
 这里的两层括号,外层括号建立了一个 ArrayList的匿名子类。内层括号定义了一个该匿名子类的构造块(构造对象时会自动执行的代码块)。
 
 由于匿名内部类的访问特性与局部内部类相同,所以仅仅做了这一个小小的改动不仅保护了数据(如果不是这样做的话,可以用一些特殊方法,得到声明的friends列表)还精简了代码,何乐而不为呢。
 | 
 |