Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Spring Framework
- 웹 커리큘럼
- 공유기 서버
- 서버운영
- Spring Batch
- reactive
- reactor core
- 웹 스터디
- 웹앱
- reactor
- ipTIME
- spring reactive
Archives
- Today
- Total
Hello World
빌더(builder)를 이용하여 toString, hashCode, equals를 구현 본문
반응형
- 이 문서는 구루비에서 작성하였습니다.
- 이 문서를 다른 블로그나 홈페이지에 게재하실 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 출처 : http://wiki.gurubee.net/pages/viewpage.action?pageId=6260166&
- 구루비 지식창고의 모든 문서는 크리에이티브 커먼즈의 저작자표시-비영리-동일조건변경허락(BY-NC-SA) 라이선스에 따라 자유롭게 사용할 수 있습니다.
빌더(builder)를 이용하여 toString, hashCode, equals를 구현 하자.
- Commons Lang 라이브러리에는 통칭해 빌더(builder)라고 알려진 유용한 클래스들이 포함되어 있다. 빌더(builder) 라이브러리를 이용하여 toString, hashCode, equals를 쉽게 구현하는 방법을 알아보자
equals 구현하기
Effective Java의 equals 메서드 구현
- 아래의 Effective Java 강좌를 보면 equals를 제대로 구현하는 방법이 쉽지 않다는 것을 알 수 있다.
- 자바 유창하게 말하기 Effective Java - 3장. 모든 객체의 공통 메소드 구현하기
EqualsBuilder의 리플렉션 API 사용하기
- Apache Commons Lang의 EqualsBuilder를 사용하면 equals를 쉽게 구현 할 수 있다.
- EqualsBuilder를 이용한 방법은 리플렉션을 과하게 사용하면 equals 메서드의 실행 성능에 영향을 줄 수 있다. 하지만 새로운 프로퍼티가 추가됐을 때 equals 메서드를 갱신할 필요가 없다는 장점은 있다
public boolean equals(Object obj) { return EqualsBuilder.reflectionEquals(this, obj); }
hashCode 구현하기
HashCodeBuilder의 리플렉션 API 사용하기
public int hashCode() { return HashCodeBuilder.reflectionHashCode(this); }
toString 구현하기
ToStringBuilder의 리플렉션 API 사용하기
// 디폴트 public String toString() { return ToStringBuilder.reflectionToString(this); } //simple style public String toString() { return ToStringBuilder.reflectionToString(this, ToStringStyle.SIMPLE_STYLE); } // multi line style public String toString() { return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE); }
BaseObject.java
- 아래 자바지기님 예제처럼 사용을 많이 합니다.
import java.io.Serializable; import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.HashCodeBuilder; import org.apache.commons.lang.builder.ToStringBuilder; import org.apache.commons.lang.builder.ToStringStyle; /** * 주석을 넣어 주세요. 배가 고파요. * * @author 박재성(자바지기 - javajigi@gmail.com) */ public class BaseObject implements Serializable { public String toString() { return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE); } public boolean equals(Object o) { return EqualsBuilder.reflectionEquals(this, o); } public int hashCode() { return HashCodeBuilder.reflectionHashCode(this); } }
참고자료
문서정보
- 이 문서는 구루비에서 작성하였습니다.
- 이 문서를 다른 블로그나 홈페이지에 게재하실 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 출처 : http://wiki.gurubee.net/pages/viewpage.action?pageId=6260166&
- 구루비 지식창고의 모든 문서는 크리에이티브 커먼즈의 저작자표시-비영리-동일조건변경허락(BY-NC-SA) 라이선스에 따라 자유롭게 사용할 수 있습니다.
반응형
'Java > Core' 카테고리의 다른 글
Java Deep Copy, Shallow Copy (0) | 2016.11.03 |
---|---|
Java에서 객체의 초기화 순서 (0) | 2016.11.03 |
Java Programing 치트 시트 (0) | 2016.04.18 |
[JAVA] 정규표현식, Matcher 메서드 사용방법과 그룹 개념이해 (0) | 2016.03.04 |
[펌]Java StringBuilder Example (0) | 2016.01.20 |
Comments