Java Tipos Intermediário
Records
Em Java, um record é uma classe especial que serve como portadora de dados imutáveis. Introduzido no Java 16, ele gera automaticamente construtor, métodos de acesso (getters), equals, hashCode e toString, reduzindo muito o código repetitivo. Records são ideais para representar valores simples, como pontos, coordenadas ou resultados, e promovem a imutabilidade por padrão, pois seus campos são final e não há setters.
Pontos-chave
recordé uma forma concisa de declarar classes imutáveis que carregam dados.- O compilador gera automaticamente construtor, acessores,
equals,hashCodeetoString. - Construtores compactos permitem validar ou normalizar dados sem repetir a lista de parâmetros.
- Records são implicitamente
finale seus campos sãofinal, garantindo imutabilidade. - Records não podem estender outras classes, mas podem implementar interfaces.
// Exemplo de record em Java
public class ExemploRecord {
// Declaração do record
public record Ponto(int x, int y) {
// Construtor compacto para validação
public Ponto {
if (x < 0 || y < 0) {
throw new IllegalArgumentException("Coordenadas não podem ser negativas");
}
}
}
public static void main(String[] args) {
// Criando instâncias
Ponto p1 = new Ponto(3, 4);
Ponto p2 = new Ponto(3, 4);
Ponto p3 = new Ponto(5, 6);
// Usando métodos gerados
System.out.println(p1); // Ponto[x=3, y=4]
System.out.println("x de p1: " + p1.x());
System.out.println("p1 equals p2? " + p1.equals(p2)); // true
System.out.println("p1 equals p3? " + p1.equals(p3)); // false
// Tentando criar com valores inválidos
try {
new Ponto(-1, 2);
} catch (IllegalArgumentException e) {
System.out.println("Erro: " + e.getMessage());
}
}
}