패턴 매칭(Pattern Matching) for instanceof 라는 기능은 Java 16부터 도입된 새로운 문법입니다.
instanceof
와 패턴 매칭(Pattern Matching)기존의 instanceof
연산자는 객체가 특정 타입의 인스턴스인지 확인할 때 사용되었습니다. 하지만 기존 방식은 타입을 확인한 후 별도로 형변환(casting)을 해야 하는 불편함이 있었습니다.
if (o instanceof Article) {
Article article = (Article) o; // 타입 캐스팅
// 이제 article 변수를 사용 가능
}
위 코드에서는 o
가 Article
의 인스턴스인지 확인한 후, 다시 명시적으로 타입 캐스팅을 해야 했습니다. 이 과정은 반복적이고 불필요한 코드가 될 수 있습니다.
instanceof
Java 16부터는 패턴 매칭을 이용하여 instanceof
연산자에서 타입을 확인함과 동시에 형변환까지 자동으로 처리할 수 있게 되었습니다. 즉, 타입을 검사한 후에 변수를 선언하고 사용할 수 있도록 한 것입니다.
if (o instanceof Article article) {
// article 변수를 바로 사용 가능
}
여기서 o instanceof Article article
은 o
가 Article
타입의 인스턴스일 때, 자동으로 article
이라는 변수에 형변환된 객체를 할당해 줍니다. 별도의 형변환 코드를 작성할 필요가 없어졌습니다.
@Override
public boolean equals(Object o) {
if (this == o) return true; // 동일성 비교: 두 객체가 같은 메모리 주소를 가리키면 true 반환
if (!(o instanceof Article article)) return false; // o가 Article 타입이 아니면 false, 맞다면 article 변수로 사용
return id == article.id; // id 필드만을 기준으로 동등성 비교
}
this == o
: 동일성(Identity) 비교로, 두 객체가 같은 메모리 주소를 가리키고 있으면 true
를 반환합니다.!(o instanceof Article article)
: o
가 Article
의 인스턴스가 아니면 false
를 반환하고, 맞다면 자동으로 형변환되어 article
변수에 할당됩니다.return id == article.id;
: id
필드만을 기준으로 동등성(Equality)을 비교합니다.instanceof
로 타입을 체크한 후 바로 해당 타입으로 형변환하기 때문에, 형변환 관련 오류가 줄어듭니다.instanceof
는 Java 16부터 도입된 기능으로, instanceof
연산자를 사용해 타입을 확인하면서 동시에 형변환까지 처리할 수 있습니다.이 패턴 매칭 방식은 Java 16 이상에서만 사용 가능하니, 해당 버전을 사용하는지 확인해야 합니다.