Language Intermediário

Valide e normalize campos de records sem repetir a lista de parâmetros.

✕ Java 16
public record Person(String name,
                     List<String> pets) {
    // Full canonical constructor
    public Person(String name,
                  List<String> pets) {
        Objects.requireNonNull(name);
        this.name = name;
        this.pets = List.copyOf(pets);
    }
}
✓ Java 16+
public record Person(String name,
                     List<String> pets) {
    // Compact constructor
    public Person {
        Objects.requireNonNull(name);
        pets = List.copyOf(pets);
    }
}
Viu um problema com este código? Nos avise.
✂️

Menos repetição

Não é necessário repetir a lista de parâmetros nem atribuir cada campo manualmente.

🛡️

Validação

Perfeito para verificações de nulo, validação de faixa e cópias defensivas.

📖

Intenção mais clara

A sintaxe compacta enfatiza a validação, não o boilerplate.

Abordagem Antiga
Validação explícita no construtor
Abordagem Moderna
Construtor compacto
Desde o JDK
16
Dificuldade
Intermediário
Construtor canônico compacto
Disponível

Amplamente disponível desde o JDK 16 (março de 2021)

Records podem declarar um construtor canônico compacto que omite a lista de parâmetros e as atribuições de campos. O compilador atribui automaticamente os parâmetros aos campos após a execução da lógica de validação. Ideal para verificações de pré-condições, cópias defensivas e normalização.

Compartilhar 𝕏 🦋 in