重複の可能性:
Java での二重ブレースの初期化とは?
いくつかのレガシーコードを見ていると、非常に紛らわしいものに出くわしました:
public class A{
public A(){
//constructor
}
public void foo(){
//implementation ommitted
}
}
public class B{
public void bar(){
A a = new A(){
{ foo(); }
}
}
}
{ foo() }
デバッグ モードでコードを実行すると、コンストラクターが呼び出された後に匿名ブロックが呼び出されることがわかりましたA()
。上記の機能は、次のこととどのように機能的に異なりますか。
public void bar(){
A a = new A();
a.foo();
}
? 私はそれらが機能的に同等であると思います.後者の方法はコードを書くためのより良い/よりクリーンな方法だと思います.