在查看我从其他开发人员那里获得的代码时,我遇到了以下代码.
public void myMethod()
{
final MyClass data1 = new MyClass(1,2,3);
final MyClass data2 = new MyClass(4,5,6);
// [...]
final MyClass dataN = new MyClass(M,O,P);
ArrayList list = new ArrayList()
{
{
add(data1);
add(data2);
// [...]
add(dataN);
}
};
}
事实上,我想我知道这段代码的作用(用定义的数据填充列表),但我很惊讶结果是如何实现的.
特别是我想知道在这种情况下花括号{}的意思.
我知道(想想?)这段代码太可怕了,我已经重写了它,但仅仅是为了好奇
我想知道它到底是做什么的.
我的猜测如下:
>第一对{}是一个匿名对象创建 – 它被转换为ArrayList< MyClass>.
>第二对{}是 – 我在考虑 – 与静态初始化类似但对于一个对象.
这可能是某种匿名构造函数吗?
有人可以在这里给我一些见解吗? (在哪里可以找到java docs中的“syntax-magic”?)