对于一个拥有 final 字段的简单类,例如 String
(请参见下面的示例)或 Spring 依赖项,使用 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
}
}