In Java 16, the feature "Pattern matching for instanceof" is finalized and can be used in production. Previously developers needed to do 3
operations in order to do this: check the variable type, cast it and assign the casted value to the new variable. This approach is quite verbose and
can be replaced with pattern matching for instanceof, doing these 3 actions (check, cast and assign) in one expression.
This rule raises an issue when an instanceof check followed by a cast and an assignment could be replaced by pattern matching.
Noncompliant code example
int f(Object o) {
if (o instanceof String) { // Noncompliant
String string = (String) o;
return string.length();
}
return 0;
}
Compliant solution
int f(Object o) {
if (o instanceof String string) { // Compliant
return string.length();
}
return 0;
}