A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黎辰 中级黑马   /  2018-8-2 21:47  /  469 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

这里着重介绍一下双括号初始化(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列表)还精简了代码,何乐而不为呢。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马