0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

JavaSE17(Silver) Recordクラスのまとめ

Last updated at Posted at 2025-01-25

自分用

Recordクラス

[ xxx ]なフィールドを作成

変更不可

[ xxx ]なクラス

final

[ xxx ]なクラスとしてコンパイルされる

Recordクラスを継承した

getterメソッド以外の3つのメソッドを自動的に宣言する
  • toString()
  • equals()
  • hashCode()
getterメソッド以外の3つのメソッドを自動的に宣言する
  • toString()
  • equals()
  • hashCode()
Recordには[xxx]は存在しない

デフォルトコンストラクタ
publicな引数を受け取るコンストラクタが暗黙的に宣言されるから

Recordを宣言できる場所はクラスと同じ。(3箇所)
  1. クラスが独立したトップレベルクラス
    a. アクセス修飾子はpublic、デフォルト
  2. クラス内のメンバとして宣言するインナークラス
    b. アクセス修飾子はprotected、private
  3. メソッド内で宣言するローカルクラス
    c. アクセス修飾子は無し
Recordで宣言できないものは?

staticではない

Recordのgetterメソッドは[ xxxx ]名で自動的に作成される

フィールド名

Recordは[ xxx ]メソッドは生成されない

setter

Recordのgetterメソッドの特徴は4つある。

[ xxx ]はレコードの構成要素と同じ

戻り値型

[ xxx ]ではない

ジェネリック

[ xxx ]なメソッド

public

[ xxx ]は持たない

throws句

Recordには標準コンストラクタ、代替コンストラクタ、コンパクトコンストラクタ3種類のコンストラクタがある
標準コンストラクタについて説明しなさい。

自動的に生成され、フィールドを初期化するコンストラクタ

代替コンストラクタについて説明しなさい。

引数は、標準コンストラクタと同じ。プログラマが何らかの処理を追加するために宣言する。代替コンストラクタはレコードそのものより厳しいアクセス修飾子をつけることはできない。コンストラクタの中で、フィールドを初期化する必要がある。

コンパクトコンストラクタについて説明しなさい。

標準コンストラクタに渡されてきた引数の妥当性を検証するために使う。
例えば、「nullでないか」とか「空文字でないか」とか「不正な値でないか」とか。
標準コンストラクタとセットになって標準コンストラクタでフィールドが初期化される前に実行される。

コンパクトコンストラクタのルールについて4つ
コンパクトコンストラクタ内で[ xxx ]を記述してはいけない

return文

明示的に[ xxx ]を呼び出してはいけない

別のコンストラクタ

[ xxx ]にアクセスしてはいけない

フィールド

コンパクトコンストラクタは[ xxx ]しか宣言できない

1つ

標準コンストラクタと代替コンストラクタ以外のコンストラクタ

標準コンストラクタと代替コンストラクタ以外のコンストラクタをオーバーロードできる。
ただし、明示的に標準コンストラクタと代替コンストラクタを呼び出す必要がある。

interfaceを実現できる

デフォルトメソッドを自動追加されるgetterメソッドでオーバーライドできる。
オーバーライドなのでシグニチャが同じで戻り値が違うとレコードのコンパイル時にエラーが起きる

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?