在查看我從另一位開發人員那裏獲得的代碼時,我遇到了以下代碼片段。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