Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

619
Visualizações
¿Cuál es la diferencia entre una Clase final y un Registro?

En palabras simples, ¿cuál es la diferencia entre una clase final y un registro en Java 17?

¿En qué caso debo usar un registro?

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Record es una clase inmutable , es decir, todos sus campos son final . Los registros son implícitamente final , por lo tanto, al igual que el record de clase final regular, no se pueden extender .

Hay una serie de restricciones impuestas a los registros ( para más detalles, consulte JEP 395 ).

Al contrario de las clases normales :

  • está prohibido declarar campos de instancia explícitamente dentro de los registros ( y recordatorio: todos los campos son final , lo cual es una distinción muy impotente );
  • La cláusula extends no está permitida con registros , porque cada registro extiende implícitamente la clase abstracta Record ;
  • el registro no se puede declarar con ninguno de estos modificadores: abstract , sealed o non-sealed (como consecuencia de ser implícitamente final );
  • los registros no pueden declarar inicializadores de instancias ni métodos nativos .

Los registros están destinados a ser "portadores transparentes de datos inmutables" , como dice JEP 395 .

Están diseñados para ser concisos , el compilador generará el constructor predeterminado , getters , hashCode/equals y toString() para usted. De modo que dentro de un registro necesita declarar solo su lógica personalizada ( si la hay ) y la declaración del registro puede ser literalmente una sola línea .

Los récords difieren mucho de las clases finales regulares.

Además, además de las peculiaridades mencionadas anteriormente, se reimplementó el mecanismo de serialización/deserialización para los registros , para que la deserialización no pase por alto al constructor.

¿En qué caso debo usar un registro?

En resumen, si sus objetos deben tener estado o necesita extender una clase en particular, entonces no puede utilizar record en tal caso.

Por otro lado, si sus objetos solo contienen datos , no están destinados a ser modificados o heredados de otras clases, entonces podría ser un buen candidato para implementarse como un record .

over 4 years ago · Santiago Trujillo Relatório

0

Una clase final es simplemente una que no se puede extender. Pero eso no impone otras restricciones a la clase; todavía puede tener campos mutables, encapsular completamente su estado, etc.

Un record es un portador transparente para una tupla determinada de componentes de estado y se requiere para exponer una API derivada de su descripción de estado. Por lo tanto, los registros están más restringidos, pero a cambio de estas restricciones, obtiene una gran comodidad (constructores, métodos de acceso, métodos de Object ), así como algunas promesas semánticas (p. ej., desempaquetar un registro con sus componentes de acceso y volver a empaquetar los resultados). con el constructor te da un objeto equals .)

Los récords también son clases final , pero esto es una parte muy pequeña de lo que significa ser un récord.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda