0Pricing
Java Academy · Lección

Patrones de records

Desestructure records en patrones

Patrones de records es una lección gratuita de Java Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Java Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Java Academy incluye 4 lecciones en total.

Patrones de record

Un patrón de record comprueba un record y lo desestructura, vinculando sus componentes a variables en un solo paso. Ya no tendrá que llamar manualmente a cada accessor.

Un record para desestructurar

Comience con un record sencillo. Sus componentes son los elementos que un patrón puede extraer.

public class Main {
    record Point(int x, int y) {}

    public static void main(String[] args) {
        Point p = new Point(3, 4);
        System.out.println(p.x() + ", " + p.y());
    }
}

Desestructuración con instanceof

En lugar de escribir instanceof Point p y después p.x(), escriba instanceof Point(int x, int y) para vincular directamente x e y.

public class Main {
    record Point(int x, int y) {}

    public static void main(String[] args) {
        Object obj = new Point(3, 4);
        if (obj instanceof Point(int x, int y)) {
            System.out.println("Sum: " + (x + y));
        }
    }
}

Los componentes se convierten en variables locales

Los nombres del patrón (x, y) son variables locales nuevas que contienen los valores de los componentes del record. Usted elige los nombres; no tienen que coincidir con los del record.

public class Main {
    record Point(int x, int y) {}

    public static void main(String[] args) {
        Object obj = new Point(10, 20);
        if (obj instanceof Point(int a, int b)) {
            System.out.println("a=" + a + " b=" + b);
        }
    }
}

Uso de var en patrones

Puede escribir var para un componente y dejar que el compilador infiera su tipo, lo que resulta práctico cuando los tipos son largos.

public class Main {
    record Pair(String key, Integer value) {}

    public static void main(String[] args) {
        Object obj = new Pair("age", 30);
        if (obj instanceof Pair(var key, var value)) {
            System.out.println(key + " = " + value);
        }
    }
}

Patrones en switch

Los patrones de record también funcionan en switch, haciendo que las ramas case se lean como formas de datos.

public class Main {
    record Point(int x, int y) {}

    static String classify(Object obj) {
        return switch (obj) {
            case Point(int x, int y) when x == y -> "on diagonal";
            case Point(int x, int y) -> "at " + x + "," + y;
            default -> "not a point";
        };
    }

    public static void main(String[] args) {
        System.out.println(classify(new Point(5, 5)));
        System.out.println(classify(new Point(1, 2)));
    }
}

Coincidencia con inferencia de tipos

Los tipos de los componentes del patrón deben ser compatibles con los tipos declarados del record. Usar el tipo exacto o var es la opción segura.

Combinación con guardas

Añada una guarda when después de un patrón de record para que solo coincida cuando los valores desestructurados cumplan una condición.

public class Main {
    record Temperature(double celsius) {}

    static String alert(Object o) {
        if (o instanceof Temperature(double c) && c > 38.0) {
            return "fever: " + c;
        }
        return "normal";
    }

    public static void main(String[] args) {
        System.out.println(alert(new Temperature(39.5)));
        System.out.println(alert(new Temperature(36.6)));
    }
}

Acceso a datos más claro

Los patrones de record resultan especialmente útiles cuando solo necesita un par de campos. Eliminan una cadena de llamadas a accessors y hacen evidentes los datos relevantes en el lugar de la coincidencia.

null y los patrones de record

Como todos los patrones instanceof, un patrón de record es false para null. La desestructuración solo tiene lugar una vez confirmado que el valor es una instancia no nula del record.

Un ejemplo práctico

Desestructure para calcular un valor directamente a partir de los componentes.

public class Main {
    record Rectangle(int width, int height) {}

    static int area(Object o) {
        if (o instanceof Rectangle(int w, int h)) {
            return w * h;
        }
        return 0;
    }

    public static void main(String[] args) {
        System.out.println(area(new Rectangle(4, 5)));
        System.out.println(area("not a rect"));
    }
}

Comprobación rápida

Compruebe su comprensión de los patrones de record.

Recapitulación

Ha aprendido los patrones de record.

  • Comprueban si un valor es de un tipo record y desestructuran sus componentes al mismo tiempo.
  • Los nombres de los componentes son variables locales nuevas que usted elige; var infiere los tipos.
  • Funcionan tanto en instanceof como en switch.
  • Como todos los patrones, son false para null.

Preguntas frecuentes

¿La lección «Patrones de records» es gratis?

Sí — el texto completo de «Patrones de records» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Java Academy, actualiza a CoddyKit PRO. El curso de Java Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Patrones de records»?

Desestructure records en patrones Practicas Java Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Java Academy?

No se requiere experiencia previa. Java Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Patrones de records»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Java Academy?

Sí. Cada lección de Java Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Pattern Matching para instanceof
  2. Patrones de records
  3. Patrones de records anidados
  4. Patrones en switch
← Volver a Java Academy