Los records son portadores inmutables y transparentes: declaras los componentes y obtienes constructor canónico, accesores, equals, hashCode y toString. Las interfaces sealed restringen qué tipos pueden implementarlas, así que un switch sobre esos tipos puede comprobarse como exhaustivo en tiempo de compilación sin rama default. Los patrones de record te dejan luego desestructurar dentro del switch, lo que convierte una cadena de instanceof con casts en una sola sentencia legible.
Por qué lo preguntan los entrevistadores
Esto data tu conocimiento de Java al instante y muestra si modelas los datos con intención. El entrevistador quiere oír que sealed más records te da tipos algebraicos de datos, que los switch exhaustivos convierten un subtipo nuevo en un error de compilación en vez de una sorpresa en ejecución, y que un record no es solo una clase más corta: es una declaración de que el valor es un agregado transparente.
Cómo estructurar tu respuesta
- Define cada función en una línea y cómo se combinan.
- Explica la exhaustividad y por qué la ausencia de default es justo el punto.
- Da un ejemplo real de modelado, como un tipo resultado o un tipo evento.
- Anota los límites: los records son inmutables solo superficialmente y no son para entidades.
Ejemplo de respuesta
Los uso juntos. Una interfaz sealed declara el conjunto cerrado de casos, cada caso es un record con sus propios componentes, y luego un switch con patrones de record los maneja. Así, un resultado de pago se convierte en una interfaz sealed con los records Aprobado, Rechazado y Pendiente, y el switch desestructura cada uno directamente en sus campos. El compilador impone la exhaustividad, que es el beneficio real: cuando alguien añade un cuarto caso, todos los switch que manejan el tipo dejan de compilar en vez de caer en silencio en una rama default y hacer lo que no toca. Los records además me dieron equals y hashCode correctos gratis, y un constructor compacto es el sitio natural para validar, así que un importe no puede ser negativo en ninguna instancia que exista. Las advertencias que menciono son que un record solo es inmutable en superficie, así que un record que contiene una lista todavía se puede mutar a través de esa lista salvo que la copie en el constructor, y que encajan mal con entidades JPA, que quieren constructor sin argumentos y estado mutable.
¿Tienes esta entrevista a la vuelta de la esquina? GhostPilot escucha tu llamada en vivo, detecta la pregunta en cuanto la hacen y pone una respuesta estructurada en tu pantalla en tiempo real. Pruébalo en tu próxima entrevista de práctica, o coge un Session Pass de $29, sin suscripción, para la de verdad.
Mira cómo funcionaPreguntas de seguimiento que puedes esperar
- ¿Cómo validas dentro de un record sin escribir el constructor completo?
- ¿Cuándo escribirías igualmente una clase normal en lugar de un record?
- ¿Qué te da una jerarquía sealed que no te dé un enum?
Más preguntas para Desarrollador Java
Tu entrevistador hará su propia versión de esta. Pega la descripción real del puesto en el Question Predictor gratuito y obtén las 20 preguntas que ese puesto tiene más probabilidades de hacerte, con lo que cada una busca en realidad.
Predecir mis preguntas