私は Java プログラマーで、現在、C++ および Smalltalk 構文で例が示されている設計パターンに関する GoF の本を読んでいます。C++ で特定の構文に出くわしましたが、これはmember initialization listと呼ばれていることがわかりました。与えられた答えから、メンバー初期化リストを使用することは、メンバー変数の割り当てを使用するよりも良い方法です(はるかに効率的です).Javaに似たものはありますか?そうでない場合、Java 設計者がこの機能を組み込まなかったのには十分な理由があるはずです。同じことについてどう思いますか?
質問する
3374 次
2 に答える
4
ありがたいことに、C++で必要な理由はJavaには当てはまりません。
フィールドは単なる参照またはプリミティブであるため、フィールドオブジェクトを作成し、それらに対して割り当て操作を実行していることを心配する必要はありません。
Javaでは、コンストラクター本体で最終フィールドを1回だけ割り当てることができます(ただし、これの仕様は非常に複雑です)。
于 2013-02-02T18:19:07.900 に答える
1
いいえ、宣言、コンストラクター、またはコンストラクターから呼び出される初期化メソッドでメンバーを初期化する必要があります。
(メンバーがデフォルト値を超えて初期化する必要があると仮定します。)
于 2013-02-02T17:20:52.463 に答える