forked from depromeet/effective-java-study
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[Item40]: @OverRide 애너테이션을 일관되게 사용하라 (depromeet#115)(성훈)
- Loading branch information
1 parent
f361a5f
commit f4846f5
Showing
1 changed file
with
38 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
# @Override 애너테이션을 일관되게 사용하라 | ||
|
||
```java | ||
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(Bigram bigram) { | ||
return bigram.first == first && bigram.second == second; | ||
} | ||
|
||
public int hashCode() { | ||
return 31 * first + second; | ||
} | ||
|
||
public static void main(String[] args) { | ||
Set<Bigram> s = new HashSet<>(); | ||
for (int i = 0; i < 10; i++) { | ||
for (char ch = 'a'; ch <= 'z'; ch++) { | ||
s.add(new Bigram(ch, ch)); | ||
} | ||
} | ||
System.out.println(s.size()); | ||
} | ||
} | ||
``` | ||
|
||
- equals와 hashcode메서들르 함께 재정의 하였음 | ||
- 하지만, equals를 재정의한 것이 아니라 다중 정의 하였음 | ||
- Object의 eqauls를 재정의 하려면 매개변수 타입을 Object로 해야함 | ||
- Object의 equals를 사용해 같은 소문자 바이그램이 각각 다른 객체로 인식 | ||
- @Override 어노테이션을 통해서 재정의 의도를 표시해야함 | ||
- 상위 클래스를 재정의 할때는 무조건 @Override 어노테이션을 표기할 것 |