🎢

コンストラクタについて

2024/12/14に公開

コンストラクタって何?

  • インスタンス化したときに自動で呼び出されるメソッド

デフォルトコンストラクタ

  • 1.引数がないため、オブジェクト生成の際にパラメータ不要
  • 2.コンストラクタを自動生成してくれる(他のコンストラクタがあるときは自動生成されない)
  • 3.オブジェクトのメンバ変数を初期化する

*以下のコード(【例1】)のとき、デフォルトコンストラクタがつくられる。DefaultConstructor dC = new DefaultConstructor();でインスタンス化可能。メンバ変数の値は初期化される。

【例1】
public class DefaultConstructor{

// メンバ変数1
private String argument1;

// メンバ変数2
private String argument2;

}

*デフォルトコンストラクタを手動で生成するには以下のコードをクラスに指定

public DefaultConstructor() { }

@NoArgsConstructor

  • 当該アノテーションを付与したクラスのデフォルトコンストラクタを自動生成

@AllArgsConstructor

  • 当該アノテーションを付与したクラスのメンバ変数すべてを引数に持つコンストラクタが自動生成される。【例1】に付与したとき、DefaultConstructor aAC = new DefaultConstructor("red","blue")でインスタンス化可能。このインスタンス化によりメンバの値は argument1="red",argument2="blue" となる。

@RequiredArgsConstructor

  • 当該アノテーションを付与したクラスのメンバ変数のうち、final付メンバ変数または@NonNull付メンバ変数のみを引数とするコンストラクタを自動生成する。(final付メンバ変数または@NonNull付メンバ変数が複数あるときは、変数の登場順で引数が用意される。)
    *以下のコード(【例2】)のとき、RequiredConstructor rC = new RequiredConstructor("green");でインスタンス化可能。このインスタンス化によりメンバの値は required1="green",required2=null となる。
【例2】
@RequiredArgsConstructor
public class RequiredConstructor{

// メンバ変数1
private final required1;

// メンバ変数2
private String required2;

}

Discussion