コンストラクターの再帰呼び出しは、コンストラクターがそれ自体を呼び出すときに発生するコンパイル時エラーです。これは、メソッドが必要なだけ自分自身を呼び出す再帰に似ています。自分自身を呼び出すメソッドは再帰的メソッドと呼ばれ、自分自身を呼び出すコンストラクターは再帰的コンストラクターと呼ばれます。
この記事では、Java での再帰的コンストラクター呼び出しエラーについて、いくつかの例を通して学びます。
再帰的なコンストラクター呼び出し
###コンストラクタ###
これはメソッドに非常に似ていますが、違いは、メソッドがオブジェクトの動作を定義するのに対し、コンストラクターはこれらのオブジェクトの初期化に使用されることです。メソッドには任意の名前を付けることができますが、コンストラクターはクラス名と同じである必要があります。さらに、メソッドは値を返すことができますが、コンストラクターは戻り値の型を持たないため、値を返しません。
ユーザーがコンストラクターを作成しない場合、Java コンパイラーは自動的にコンストラクターを作成します (これをデフォルト コンストラクターと呼びます)。
例 1
リーリー
###出力###
リーリー
コンストラクターとメソッドの類似点にもかかわらず、Java では再帰コンストラクターは許可されません。これは悪いプログラミング手法です。
例 2
次の例は、再帰的なコンストラクター呼び出しエラーを示しています。
ここではクラスを作成し、そのコンストラクターと 2 つのパラメーターを定義します。次に、その本体内で同じコンストラクターを呼び出します。
リーリー
###出力###
リーリー
例 3
の中国語訳は次のとおりです:
例 3
次の例では、コンストラクター内でオブジェクトを定義して、Java がコンストラクター内でオブジェクトを作成できるかどうかを確認します。
リーリー
###出力###
リーリー
コンストラクター内でオブジェクトを作成するとオブジェクト作成の無限ループが発生するため、StackOverflowError エラーが発生しました。
例 4
の中国語訳は次のとおりです:
例 4
次の例は、別のコンストラクター内でコンストラクターを呼び出すことが正当であることを示しています。
リーリー
###出力###
リーリー
###結論は###
Java ではコンストラクターの再帰が許可されていないため、このプログラミング方法は明らかに避けるべきです。この記事では、コンストラクターの説明から始めて、再帰コンストラクターについて説明します。さらに、無限ループが原因で発生する StackOverflowError と呼ばれる別のエラーも見つかりました。
以上がJava での再帰的なコンストラクター呼び出しの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。