아틴
Atin
아틴
전체 방문자
오늘
어제
  • 분류 전체보기 (460)
    • Devlopment (246)
      • 정리 글 (20)
      • MicroServices (0)
      • Reactive, Concurrenc.. (12)
      • Java (44)
      • Spring (20)
      • C,C++,Ruby,Python (52)
      • Mobile (39)
      • Web (35)
      • Tip & Info (14)
      • Unit Test (7)
    • Infra (44)
      • OS (21)
      • RDBMS (13)
      • NoSQL&Cache (5)
      • AWS (4)
    • Computer Science (11)
    • Etc (156)

블로그 메뉴

  • Home
  • Guestbook

공지사항

인기 글

태그

  • Linux
  • TRPG
  • Dungeons & Dragons
  • 해킨토시
  • 전라도
  • Ruby on Rails
  • Android
  • Python
  • C
  • 정읍
  • 아이폰
  • 안드로이드
  • 여행
  • 자바
  • Java
  • CSS
  • javascript
  • 던젼 앤 드래곤즈
  • mysql
  • jsp

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
아틴

Atin

Devlopment/Java

자바 기본 메소드의 구현

2012. 6. 20. 13:58
반응형

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
    'Devlopment/Java' 카테고리의 다른 글
    • Tomcat & Java의 memory leak 분석
    • Tomcat 및 Java ThreadPool에서 memory leak 현상
    • MyBatis NumberFormatException 문제
    • Java간의 통신
    아틴
    아틴

    티스토리툴바