在查看我从另一位开发人员那里获得的代码时,我遇到了以下代码片段。Java语法 - 它有什么作用?
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<MyClass> list = new ArrayList<MyClass>()
{
{
add(data1);
add(data2);
// [...]
add(dataN);
}
};
}
其实,我想我知道这个代码(填充list
与定义的数据)的东西,但还没有我吃惊的结果是如何实现的。 特别我想知道在这种情况下花括号{}
的含义。
我知道(想想?),这段代码很糟糕,我已经重写了它,但仅仅是为了好奇 我想知道它到底是什么。
我的猜测是:
- 首先对
{}
是一个匿名对象的创建 - 这是转换为ArrayList<MyClass>
。 - 第二对
{}
是 - 我在想 - 类似于静态初始化,但是对于一个对象。 这可能是某种匿名构造函数?
有人能给我一些见解吗? (我在哪里可以找到在Java文档,例如“语法魔法”?)
没错。从原始源复制/粘贴/编辑错误:)谢谢指出。 – GeneSys 2013-02-21 12:29:46
'{}'是大括号或花括号,而不是括号'()'https://en.wikipedia.org/wiki/Bracket – 2013-02-21 16:10:26
@SteveKuo谢谢澄清。作为一名德国母语的人,我不知道这一点,因为在德国,一切都是“klammer” - 很高兴看到英文更明显:) – GeneSys 2013-02-21 19:38:41