Le pattern matching teste le type d'une valeur et la déstructure en une seule étape. Avec instanceof, la variable est déjà typée dans le bloc ; dans un switch, chaque cas peut être un motif de type, éventuellement avec garde when, ou un motif de record qui extrait ses composants.
Exemple
if (obj instanceof String s && !s.isEmpty()) {
System.out.println(s.length());
}