許すってどういうこと?Java では再帰コンストラクターを使用できます。コードを再利用して、より階層的な方法でコンストラクターを設計できます。
次の再帰コンストラクターの例では、new User()
ornew User("Marcus")
を呼び出すことができ、使用するいずれかのコンストラクターで を にnewUser
設定しtrue
ます。
public class User() {
public String userName;
public boolean newUser;
User() {
newUser = true;
}
User(String userName) {
// Recursively call no-argument constructor
this();
this.userName = userName;
}
}
これは、再帰コンストラクターを使用しない場合と同じです。コードの重複行に注意してください。
public class User() {
public String userName;
public boolean newUser;
User() {
newUser = true;
}
User(String userName) {
newUser = true;
this.userName = userName;
}
}
次の再帰的でないコンストラクターの例では、コンストラクターに名前を渡さない場合、名前は "New User" に設定されます。名前を設定していない場合にのみ、引数なしのコンストラクターを呼び出したいと思います。ここで再帰的なコンストラクター呼び出しを行うと、userName を 2 回設定することになります。
public class User() {
public String userName;
User() {
this.userName = "New User";
}
User(String userName) {
this.userName = userName;
}
}
次の場合にのみ、再帰コンストラクターを使用します。
- 複数のコンストラクターを持つ
- コンストラクターにコードを含める
- 別のコンストラクターにあるコードを再帰的に使用したい