次のような構造の Java コードを見つけました。
public MyParameterizedFunction(String param1, int param2)
{
this(param1, param2, false);
}
public MyParameterizedFunction(String param1, int param2, boolean param3)
{
//use all three parameters here
}
C++ ではパラメータにデフォルト値を割り当てることができることは知っています。例:
void MyParameterizedFunction(String param1, int param2, bool param3=false);
Java はこのような構文をサポートしていますか? この 2 段階の構文が望ましい理由はありますか?
ベストアンサー1
いいえ、あなたが見つけた構造は、Java がそれを処理する方法です (つまり、デフォルトのパラメータの代わりにオーバーロードを使用します)。
コンストラクターの場合、効果的なJava:プログラミング言語ガイドのオーバーロードが複雑になっている場合は、項目 1 のヒント (コンストラクターの代わりに静的ファクトリ メソッドを検討してください) を参照してください。他のメソッドについては、一部のケースの名前を変更するか、パラメーター オブジェクトを使用すると役立つ場合があります。
これは、区別が困難なほど複雑な場合です。明確なケースとしては、数とタイプだけでなく、パラメータの順序を使用して区別する必要がある場合が挙げられます。