前言
在刷题的时候看到有人写代码用了{
{}}
写法,以前没有见过,特此记录。
Queue<TreeNode> queue = new LinkedList<>() {
{
add(root); }};
简单介绍
举例
{
{}}
这种方法是对一个集合进行初始化操作,避免了对集合初始化进行一条一条的add。
ArrayList<String> list = new ArrayList<String>(){
{
add("A");
add("B");
add("C");
}};
// 和下面功能实现一样
// ArrayList<String> list = new ArrayList<String>();
// list.add("a");
// list.add("b");
// list.add("c");
理解
第一个括号
//定义了一个继承于ArrayList的类,它没有名字
new ArrayList<String>(){
//在这里对这个类进行具体定义
};
这里的括号表示对一个类进行具体的定义。
第二个括号
new ArrayList<String>(){
{
//这里是实例初始化块,可以直接调用父类的非私有方法或访问非私有成员
}
};
这里的括号表示实例初始化块(Instance Initialiazer Block),也被称为非静态初始化块。
类比于静态初始块
static{
//静态初始块
}