instanceof 연산자에 대한 pattern matching으로 object에서 component의 조건부 추출을 보다 간결하고 안전하게 표현할 수 있게 되었다.
// 기존 Java 8 코드
@Override
public boolean equals(Object obj) {
if (obj instanceof Student) {
Student student = (Student) obj;
if (this.studentNumber == student.studentNumber) {
return true;
} else {
return false;
}
}
return false;
}
// Java 16 instanceof 연산자에 대한 pattern matching
@Override
public boolean equals(Object obj) {
if (obj instanceof Student student) {
if (this.studentNumber == student.studentNumber) {
return true;
} else {
return false;
}
}
return false;
}
객체 타입이 obj 타입인지 확인한 후(instanceof) obj를 비교할 객체 타입으로 casting 하는 과정이 필요했는데 그 과정이 없어졌고, scope 안에 참조변수를 넣을 수 있게 되었다.