黑马程序员技术交流社区

标题: 匿名内部类技巧 [打印本页]

作者: 黎辰    时间: 2018-8-2 21:47
标题: 匿名内部类技巧
这里着重介绍一下双括号初始化(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列表)还精简了代码,何乐而不为呢。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2