コンストラクターは同じコードを共有できるように思えます。たとえば、次のようになります。
public class Foo {
private int foo;
{foo = 5;}
public Foo(){}
public Foo(int v){this.foo = v;}
public int getFoo(){return foo;}
}
コード「foo=5;」両方のコンストラクターに対して呼び出されます。
できないようですが、確認したいです。パラメータを使用するような一般的なコードを作成することはできませんか?
たとえば、次のようなものです。
public class Foo {
private int foo;
(int m){foo = m*5;}
public Foo(int m){}
public Foo(int v,int m){this.foo = v;}
public int getFoo(){return foo;}
}
私の理解では、唯一の方法は、すべてのコンストラクターによって呼び出されるプライベート void init(int m) を作成することですか?
ps: {foo = 5;} を「共通コード」と呼んでいますが、この機能には別の正式な名前があるのでしょうか?
編集 (1):
私が探していた用語は初期化ブロックです
この質問は、コンストラクターが別のコンストラクターも呼び出すことができるかどうかを尋ねることと同じではありません。初期化ブロックを使用する場合、コードは AUTOMATICALLY と呼ばれるためです。コンストラクターを呼び出し、それを呼び出すのを忘れるリスクなし
「void init」の使用に関する私のコメントは良くありませんでした。実際、この場合、別のコンストラクターを呼び出す方が良いです。
要するに、私の質問: 初期化ブロックはパラメーターを取ることができますか? これは、すべてのコンストラクターでいくつかのパラメーターを強制的に実装するのと同じようなものです。
編集 (2):
私が求めていることを達成する唯一の方法は、継承を使用して特定のコンストラクターの使用を強制することではないかと思います。