toString, equals, hashCode메소드를 구현하는 방법에 대해 적는다.
Effective Java에서 보면은 구현해야 할 이유와 잘못된 구현과, 올바른 구현에 대해서 알 수 있다.
예제.
toString은 마음대로 구현해도 상관 없다.
@Override
public boolean equals(Object obj) {
if(obj == null || !(obj instanceof AtinStory)) return false;
AtinStory inf = ( AtinStory ) obj;
return id.equals(inf.id) &&
name.equals(inf.name) &&
index == inf.index &&
subnetIp.equals(inf.subnetIp) &&
netmask.equals(inf.netmask);
}
@Override
public int hashCode() {
int result = 17;
result = 31 * result + id.hashCode();
result = 31 * result + name.hashCode();
result = 31 * result + subnetIp.hashCode();
result = 31 * result + index;
result = 31 * result + netmask.hashCode();
return result;
}
간단하고 효율적인 예제
직접 구현하는 것도 좋은 방법이나 클래스가 갖고 있는 내부 변수가 많아질수록 일일히 구현하는 것은 정말 번거로운 일이다. Apache 라이브러리를 이용한 좋은 방법이 있다.
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.DEFAULT_STYLE);
}
@Override
public boolean equals(Object o) {
return EqualsBuilder.reflectionEquals(this, o);
}
@Override
public int hashCode() {
return HashCodeBuilder.reflectionHashCode(this);
}
이걸로 끝이다.
필요하면 이 메소드를 구현한 클래스를 상속만 하면 됀다.
'Devlopment > Java' 카테고리의 다른 글
Mavn 및 플러그인 설치 (0) | 2013.04.19 |
---|---|
Java 이전 버전을 받을 수 있는 URL (0) | 2013.03.28 |
Java 실행 (0) | 2013.01.31 |
Tomcat & Java의 memory leak 분석 (0) | 2012.07.17 |
Tomcat 및 Java ThreadPool에서 memory leak 현상 (3) | 2012.07.12 |
MyBatis NumberFormatException 문제 (0) | 2012.05.26 |
Java간의 통신 (1) | 2012.05.10 |
Netty서버에서 1024이상 받지 못하는 문제의 해결법 (0) | 2012.04.15 |
XmlGenerator - Java에서 XML 생성 (3) | 2012.03.09 |
JAVA.LANG.CLASS를 통한 동적 객체 생성 (0) | 2012.02.28 |