[Effective Java] @Override 애너테이션을 일관되게 사용하라

들어가며

@Override 애너테이션은 매우 유용하다. 다음 코드를 보자.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Bigram {
private final char first;
private final char second;

public Bigram(char first, char second) {
this.first = first;
this.second = second;
}

public boolean equals(Biagram b) {
return b.first == first && b.second == second);
}

public int hashCode() {
return 31 * first + second;
}
}

이 클래스는 잘못된 equals를 정의하고 있다. Set과 같은 컬렉션에서 사용할 용도로 equals를 정의하였다면 말이다. @Override 애너테이션을 붙혔다면 금방 알아차릴 수 있었을 것이다. 메세지는 명백하다. 상위 클래스의 메소드를 재정의하려는 모든 메소드에 @Override 애너테이션을 달자. 단, 구체 클래스에서 상위 클래스의 추상 메소드를 재정의한 경우엔 이 애너테이션을 달지 않아도 된다.

Author: Song Hayoung
Link: https://songhayoung.github.io/2020/08/14/Languages/Effective%20JAVA/item40/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.