1. ホーム
  2. java

[解決済み] Javaはパラメータのデフォルト値をサポートしていますか?

2022-03-15 15:25:18

質問

以下のような構造の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段階構文が望ましい理由はありますか?

どのように解決するのですか?

いいえ、あなたが見つけた構造は、Javaがそれを処理する方法です(つまり、デフォルトのパラメータの代わりにオーバーロードを使用する)。

コンストラクタの場合。 Effective Java を参照してください。プログラミング言語ガイドの 項目1のヒント(コンストラクタの代わりに静的ファクトリメソッドを検討する)は、オーバーロードが複雑になってきた場合です。その他のメソッドについては、いくつかのケースの名前を変更したり、パラメータオブジェクトを使用したりすることが有効です。これは、差別化が難しいほど複雑になっている場合です。確実なのは、パラメータの数や型だけでなく、パラメータの順序を使って区別しなければならない場合です。