티스토리 뷰
자바가 기본으로 제공하는 애너테이션 중 가장 중요한 것은 @Override 이다.
@Override 는 메서드 선언에만 달 수 있으며, 이 애너테이션이 달렸다는 것은 상위 타입의 메서드를 재정의 했음을 뜻한다.
// equals 메서드를 재정의 했다 ???
public boolean eqauls(Item40 item40) {
return item40.x == x && item40.y == y;
}
- 위 메서드는 equals() 를 재정의 한게 아니라 다중정의해버렸다.
- Objects.equals() 를 재정의 하기 위해선 매개변수 타입이 Object 여야 하는데 Item40 이다.
- 이러한 오류는 컴파일러가 찾아낼 수 있지만, 그러려면 Object.equals() 를 재정의한다는 의도를 명시해줘야한다.
// @Override 애너테이션을 달면 컴파일 에러 발생
// 매개변수가 Object 여야 한다고 알려줌
@Override
public boolean eqauls(Item40 item40) {
return item40.x == x && item40.y == y;
}
// 제대로 재정의한 equals()
@Override
public boolean equals(Object o) {
if (!(o instanceof Item40)) {
return false;
}
Item40 item40 = (Item40) o;
return item40.x == x && item40.y == y
}
- 상위 클래스의 메서드를 재정의하려는 모든 메서드에 @Override 애너테이션을 달자.
- IDE 에서도 무조건 다는것을 권장한다.
결론
- 재정의한 모든 메서드에 @Override 애너테이션을 의식적으로 달면 실수했을때 컴파일러가 바로 알려줄 것이다.
- 예외가 존재하긴 하나 단다고 해서 해로울 것도 없으니 무조건 달자.
'책 > 이펙티브자바' 카테고리의 다른 글
아이템28. 배열보다는 리스트를 사용하라 (0) | 2021.09.01 |
---|---|
아이템41. 정의하려는 것이 타입이라면 마커 인터페이스를 사용하라 (0) | 2021.08.31 |
아이템39. 명명 패턴보다 애너테이션을 사용하라 (0) | 2021.08.31 |
아이템50. 적시에 방어적 복사본을 만들라 (0) | 2021.08.30 |
아이템49. 매개변수가 유효한지 검사하라 (0) | 2021.08.30 |
링크
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 프로그래머스 SQL
- 킹수빈닷컴
- js array
- GCP
- 김영한 http
- 모던자바스크립트
- ㅇㄷㅇㅈ
- 가상 면접 사례로 배우는 대규모 시스템 설계 기초
- REST API
- js promise
- 이펙티브자바
- HTTP 완벽가이드
- Spring Security
- 이펙티브자바 스터디
- JS 딥다이브
- 프로그래머스
- 이펙티브자바 아이템60
- js api
- HTTP 완벽 가이드
- java
- http
- dreamcoding
- JPA 연관관계 매핑
- 패스트캠퍼스 컴퓨터공학 완주반
- 백기선 스터디
- 드림코딩
- BOJ
- 이펙티브자바 아이템59
- 김영한 JPA
- 백준
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
글 보관함