97. Introducing record patterns for instanceof
In order to introduce record patterns, we need a more complex record than the one we’ve used so far, so here’s one:
public record Doctor(String name, String specialty)
implements Staff {}
This record implements the Staff
interface as any other employee of our hospital. Now, we can identify a certain doctor in the old-fashioned style via instanceof
as follows:
public static String cabinet(Staff staff) {
if (staff instanceof Doctor) {
Doctor dr = (Doctor) staff;
return "Cabinet of " + dr.specialty()
+ ". Doctor: " + dr.name();
}
...
}
But, as we know from Chapter 2, Problems 58-67, JDK has introduced type patterns that can be used for instanceof
and switch
. So, in this particular case, we can rewrite the previous code via type patterns as follows:
public static String cabinet(Staff staff) {
if (staff instanceof Doctor dr) { // type pattern matching
return...