4

Stringa (以下の例を参照) または Spring の依存関係などの final フィールドを持つ単純なクラスが与えられた場合、Java 14 レコードを使用してより簡潔にし、Lombok などの注釈プロセッサを削除することをお勧めします。

レコードを記述するJEPによると、「レコードは、そのデータの単純で透過的な所有者であるというセマンティックな主張を行います」。

明らかに、final フィールドのみを持つジェネリック クラスは、そのデータの透過的なホルダーではありません。また、レコードを使用すると、そのfinal変数が公開されますが、これは望ましくない場合があります。ただし、多くの場合、これはおそらく大きな問題ではありません。

したがって、これはこの言語機能の「乱用」と見なすのに「十分」ですか? それとも、他にあまり目立たない欠点はありますか?

@RequiredArgsConstructor // or an explicit constructor when not using lombok
class AudienceValidator implements OAuth2TokenValidator<Jwt> {
    private final String audience;

    public OAuth2TokenValidatorResult validate(Jwt jwt) {
        // validate
    }
}


record AudienceValidator(String audience) implements OAuth2TokenValidator<Jwt> {

    public OAuth2TokenValidatorResult validate(Jwt jwt) {
        // validate
    }
}
4

1 に答える 1