[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-java-11-25-record-patterns-dekonstruktsiya-zapisey":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":16,"progress":17,"seo":18},413,"record-patterns-dekonstruktsiya-zapisey",11,"java-11-25","Java 11–25","🆕","Record Patterns (деконструкция записей)","Record Patterns (финализированы в Java 21) позволяют деконструировать (разложить) Record на компоненты прямо в pattern matching, включая вложенную деконструкцию.\n\n\u003Cdetails>\u003Csummary>Пример: деконструкция в instanceof и switch\u003C\u002Fsummary>\n\n```java\nrecord Point(int x, int y) {}\nrecord Circle(Point center, double radius) {}\n\n\u002F\u002F instanceof с деконструкцией\nif (obj instanceof Point(int x, int y)) {\n    System.out.println(\"x=\" + x + \", y=\" + y);\n}\n\n\u002F\u002F Вложенная деконструкция\nif (shape instanceof Circle(Point(var x, var y), var r)) {\n    System.out.println(\"Circle at (\" + x + \", \" + y + \") with radius \" + r);\n}\n\n\u002F\u002F В switch\nstatic String describe(Shape shape) {\n    return switch (shape) {\n        case Circle(Point(var x, var y), var r) when r > 10 ->\n            \"Большой круг в (%d, %d)\".formatted(x, y);\n        case Circle(Point(var x, var y), var r) ->\n            \"Круг в (%d, %d) r=%.1f\".formatted(x, y, r);\n        case Rectangle(Point(var x, var y), var w, var h) ->\n            \"Прямоугольник в (%d, %d) %dx%d\".formatted(x, y, w, h);\n    };\n}\n\n\u002F\u002F Unnamed patterns (Java 21) — игнорирование ненужных компонентов\nif (obj instanceof Point(var x, _)) {\n    \u002F\u002F Нужен только x, y игнорируется\n}\n```\n\n\u003C\u002Fdetails>\n\n### Частые ошибки\n\n- Деконструировать не-Record — Record Patterns работают только с Records\n- Забыть, что деконструкция создаёт копии — значения копируются, а не ссылаются на оригинал\n\n### Как используется в 2026\n\n- В связке с Sealed Interfaces + Records — элегантный pattern matching без instanceof-каскадов\n- Заменяет Visitor pattern для обработки иерархий типов\n\n> **На собеседовании:** продемонстрируйте вложенную деконструкцию (Record внутри Record) и unnamed patterns (`_`). Это показывает глубокое понимание, а не поверхностное знание синтаксиса.","","middle",[15],"java-modern",[],null,{"title":19,"description":20,"ogTitle":19,"ogDescription":21,"keywords":22,"schemaAnswer":23,"featuredSnippetReady":24},"Record Patterns (деконструкция записей) — Gymterview","Record Patterns (финализированы в Java 21) позволяют деконструировать (разложить) Record на компоненты прямо в pattern matching, включая вложенную деконструкцию","Record Patterns (финализированы в Java 21) позволяют деконструировать (разложить) Record на компоненты прямо в pattern m",[15,13],"Record Patterns (финализированы в Java 21) позволяют деконструировать (разложить) Record на компоненты прямо в pattern matching, включая вложенную деконструкцию.",true]