Skip to content

Latest commit

 

History

History
36 lines (25 loc) · 1.22 KB

File metadata and controls

36 lines (25 loc) · 1.22 KB

[아이템 40] @Override 애너테이션을 일관되게 사용하라

작성자: 김대희

작성일: 2022년 6월 14일


기본 애너테이션중 가장 중요한 @Override

  • 상위 타입의 메서드를 재정의했음을 뜻하는 애너테이션
  • 여러 가지 악명 높은 버그들을 예방할 수 있다.

@Override를 간과했을 때 나타날 수 있는 버그

public boolean equals(MyClass o) {
    return o.first == first && o.second == second;
}
// 이는 오버라이드가 아니라 파라미터 타입이 다른 오버로딩이 되었다.

// 따라서 아래와 같이 @Override 를 작성하면
@Override
public boolean equals(MyClass o) {
    return o.first == first && o.second == second;
}

// 아래와 같은 오류가 출력되어 의도하지 않은 동작을 바로잡을 수 있다.
MyClass.java:10: method does not override or implement a method from a supertype
💡 정리: 재정의한 메서드에 모두 @Override를 달면 실수를 줄일 수 있으며, 예외 상황은 추상 메서드를 재정의 한 경우에는 재정의하지 않으면 알려주기 때문에 안 달아도 되긴 하며, 달아도 손해는 없으니 일관적으로 다는 것이 좋다.