Pattern Matching – это долгожданная фича в статусе preview в Java 14. С помощью pattern matching можно более удобно использовать проверку и приведение типов в выражении instanceof.

До появления функциональности pattern matching программисты всегда писали подобный код:

Object obj = "Hello, World";

if (obj instanceof String) {
    String s = (String) obj;
    System.out.println(s.length());
}

То есть, если нужно безопасно привести переменную одного типа к другому типу, требуется проверить, является ли переменная объектом нужного типа, а затем привести этот объект к нужному типу. И только после приведения типов можно ссылаться к специфическим методам нужного типа.

Pattern matching упрощает данную задачу – теперь можно сразу же объявить переменную вслед за типов, на который мы проверяем объект:

Object obj = "Hello, World";

if (obj instanceof String s) {
    System.out.println(s.length());
}

Также интересно, что в выражении instanceof можно сразу же вызывать методы того типа, к которому приводится объект:

if (obj instanceof String s && s.length() > 10)  {
    System.out.println(s.length());
}

Java 14: Pattern Matching