Map、List初始化

最初学java,初始化Map和list都是new以下,然后put、add进去的。

// new mapMap map = new HashMap();map.put("name", "ty");map.put("age", 18);System.out.println(map);List list = new ArrayList();list.add(1);list.add(2);System.out.println(list);

后来发现可以通过双括弧语法初始化:

// 初始化Map newMap = new HashMap(){{put("name", "ty");put("age", 18);}};System.out.println(newMap);List newList = new ArrayList(){{add(1);add(2);}};System.out.println(newList);

原理:第一层括弧,其实就是匿名内部类;第二层括弧,其实就是静态初始化块,这个块在内部匿名类构造时被执行。

匿名内部类:
如其名就是没有名字的内部类,因此,匿名内部类只能使用一次,它通常用来简化代码编写。但使用匿名内部类是有前提条件:必须继承一个父类或实现一个接口。

// 匿名内部类Child c = new Child(){// 重写say方法public void say(){bye();System.out.println("eating ....");}// 新增方法,{}外面不可见,内部可见,原因是因为匿名内部类是一次性的,仅仅在当前继承了Child类,没有自己的名字,不能强制转换public void bye(){System.out.println("bye ....");}};c.say();


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部