[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-java-11-25-pattern-matching-dlya-instanceof":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},403,"pattern-matching-dlya-instanceof",11,"java-11-25","Java 11–25","🆕","Pattern Matching для instanceof","Pattern Matching для instanceof (финализирован в Java 16) устраняет необходимость явного приведения типа после проверки `instanceof` — переменная привязывается к типу прямо в условии.\n\n```java\n\u002F\u002F До Java 16 — проверка + приведение:\nif (obj instanceof String) {\n    String s = (String) obj;\n    System.out.println(s.toUpperCase());\n}\n\n\u002F\u002F Java 16+ — pattern variable:\nif (obj instanceof String s) {\n    System.out.println(s.toUpperCase()); \u002F\u002F s уже String\n}\n\n\u002F\u002F С условием (guarded pattern):\nif (obj instanceof String s && s.length() > 5) {\n    System.out.println(\"Long string: \" + s);\n}\n```\n\n### Практическое применение — equals()\n\n```java\n\u002F\u002F До Java 16:\n@Override\npublic boolean equals(Object o) {\n    if (this == o) return true;\n    if (!(o instanceof Point)) return false;\n    Point other = (Point) o;\n    return x == other.x && y == other.y;\n}\n\n\u002F\u002F Java 16+:\n@Override\npublic boolean equals(Object o) {\n    return (o instanceof Point other)\n        && x == other.x && y == other.y;\n}\n```\n\n### Частые ошибки\n\n- Pattern variable с `||` — `if (obj instanceof String s || obj instanceof Integer s)` приводит к ошибке компиляции\n- Shadowing — если есть поле `s`, pattern variable `s` вызовет ошибку; используйте другое имя\n- Использовать pattern matching в `catch` — не поддерживается\n\n### Как используется в 2026\n\n- Стандартная практика; старый стиль с явным cast считается устаревшим\n- Комбинируется с Pattern Matching для switch (Java 21) для мощной деконструкции типов\n- IDE автоматически предлагает рефакторинг старого кода\n\n> **На собеседовании:** покажите рефакторинг `equals()` с pattern matching — это убедительный практический пример. Важно знать про flow scoping (переменная доступна только в scope, где instanceof гарантированно true) и ограничение с `||`.","","junior",[15],"java-modern",[],null,{"title":19,"description":20,"ogTitle":19,"ogDescription":21,"keywords":22,"schemaAnswer":23,"featuredSnippetReady":24},"Pattern Matching для instanceof — Gymterview","Pattern Matching для instanceof (финализирован в Java 16) устраняет необходимость явного приведения типа после проверки `instanceof` — переменная привязывается ","Pattern Matching для instanceof (финализирован в Java 16) устраняет необходимость явного приведения типа после проверки ",[15,13],"Pattern Matching для instanceof (финализирован в Java 16) устраняет необходимость явного приведения типа после проверки `instanceof` — переменная привязывается к типу прямо в условии.",true]