Java 在集合初始化时赋值

查看:441
本文介绍了Java 在集合初始化时赋值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

List<String> list = new ArrayList<String>(){
            {
                add("hello");
                remove(0);
            }
        };

map = new HashMap<String, Object>(){
            {
                put("name","123");
            }
        };

请问这个语法是来自 Java 几?他的原理又是什么?一个大括号我知道是匿名内部类,但是里面的大括号不知道是什么意思??

解决方案

这种语法叫做Java的动态初始化块

它是包含在某个类里面一个大括号中的代码片段,在类实例化时自动调用。

例如:

class Person {
    {System.out.print(123);}
}

那么在调用new Person()时就会打印出123

至于你问题中的代码,只不过那个动态初始化块放到了一个匿名类中,所以看起来有点奇怪、不太好理解。但是,毕竟匿名类也是类啊,所以是合法的。结果就是在那个匿名类被实例化的时候,那段代码执行了,集合中放进去了几个元素,相当于初始化了集合。

至于从Java哪个版本开始支持的,我没有查记不清了,但是估计很早就支持了,只是从Java 5就应该支持了。

最后说一句,用这种方式初始化集合,看起来像黑魔法。

另外,还可以去查一下静态初始化块,比较一下它们的区别。

这篇关于Java 在集合初始化时赋值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆