Use Pattern Matching for instanceof

Inspections can guide us to use newer Java features.

If our code uses an instanceof followed by a cast, IntelliJ IDEA highlights these with a warning and suggests replacing this with pattern matching for instanceof. Note that this is only available if you're using a language level of Java 16 or above.

Press ⌥⏎ (macOS) / Alt+Enter (Windows/Linux) and choose Replace with pattern variable.

public class PatternMatchingSwitch {

 void outputValueInUpperCase(Object obj) {
  if (obj instanceof String) {
   String s = (String) obj;
   System.out.println(s);
  }
 }
}

You can press ⌥⏎ (macOS) / Alt+Enter (Windows/Linux) and choose Replace 's' with pattern variable.

public class PatternMatchingSwitch {

    void outputValueInUpperCase(Object obj) {
        if (obj instanceof String s) {
            System.out.println(s);
        }
    }
}

Interested in JVM Development?

call to action image

You can also use pattern matching for switch statements!

Learn More


Related Resources

Work with records
Work with records
Create a record, or convert between classes and records.
Go to Next Error
Go to Next Error
Quickly move to the next (or previous) error or warning in the file.
Run inspection
Run inspection
Run inspection by name. For example, run Vulnerable API usage to see where the vulnerable API of external dependencies is used in your code.