自分用
Recordクラス
[ xxx ]なフィールドを作成
変更不可
[ xxx ]なクラス
final
[ xxx ]なクラスとしてコンパイルされる
Recordクラスを継承した
getterメソッド以外の3つのメソッドを自動的に宣言する
- toString()
- equals()
- hashCode()
getterメソッド以外の3つのメソッドを自動的に宣言する
- toString()
- equals()
- hashCode()
Recordには[xxx]は存在しない
デフォルトコンストラクタ
publicな引数を受け取るコンストラクタが暗黙的に宣言されるから
Recordを宣言できる場所はクラスと同じ。(3箇所)
- クラスが独立したトップレベルクラス
a. アクセス修飾子はpublic、デフォルト - クラス内のメンバとして宣言するインナークラス
b. アクセス修飾子はprotected、private - メソッド内で宣言するローカルクラス
c. アクセス修飾子は無し
Recordで宣言できないものは?
staticではない
Recordのgetterメソッドは[ xxxx ]名で自動的に作成される
フィールド名
Recordは[ xxx ]メソッドは生成されない
setter
Recordのgetterメソッドの特徴は4つある。
[ xxx ]はレコードの構成要素と同じ
戻り値型
[ xxx ]ではない
ジェネリック
[ xxx ]なメソッド
public
[ xxx ]は持たない
throws句
標準コンストラクタについて説明しなさい。
自動的に生成され、フィールドを初期化するコンストラクタ
代替コンストラクタについて説明しなさい。
引数は、標準コンストラクタと同じ。プログラマが何らかの処理を追加するために宣言する。代替コンストラクタはレコードそのものより厳しいアクセス修飾子をつけることはできない。コンストラクタの中で、フィールドを初期化する必要がある。
コンパクトコンストラクタについて説明しなさい。
標準コンストラクタに渡されてきた引数の妥当性を検証するために使う。
例えば、「nullでないか」とか「空文字でないか」とか「不正な値でないか」とか。
標準コンストラクタとセットになって標準コンストラクタでフィールドが初期化される前に実行される。
コンパクトコンストラクタ内で[ xxx ]を記述してはいけない
return文
明示的に[ xxx ]を呼び出してはいけない
別のコンストラクタ
[ xxx ]にアクセスしてはいけない
フィールド
コンパクトコンストラクタは[ xxx ]しか宣言できない
1つ
標準コンストラクタと代替コンストラクタ以外のコンストラクタ
標準コンストラクタと代替コンストラクタ以外のコンストラクタをオーバーロードできる。
ただし、明示的に標準コンストラクタと代替コンストラクタを呼び出す必要がある。
interfaceを実現できる
デフォルトメソッドを自動追加されるgetterメソッドでオーバーライドできる。
オーバーライドなのでシグニチャが同じで戻り値が違うとレコードのコンパイル時にエラーが起きる