Method chaining - Wikipidea : http://en.wikipedia.org/wiki/Method_chaining
자바 7에 추가될뻔한 기능이었다고 한다. ^^; 자바의 빈클래스에 막 길들어지기 시작한 내게는 조금 낯선 형태랄까?
setter 메소드에서 클래스(this)를 리턴해주는 형태니까...
Chaining.java
ChainingTest.java
이렇게 쓰는 것에 낯설기는 하지만... 익숙하게 사용했을때 어떤 장점이 있는지 확인해보고 익혀두는 것도 나쁘지 않겠다.
자바 7에 추가될뻔한 기능이었다고 한다. ^^; 자바의 빈클래스에 막 길들어지기 시작한 내게는 조금 낯선 형태랄까?
setter 메소드에서 클래스(this)를 리턴해주는 형태니까...
Chaining.java
public class DateChaining { private String year; private String month; private String day; public String getMonth() { return month; } public DateChaining setMonth(String month) { this.month = month; return this; } public String getDay() { return day; } public DateChaining setDay(String day) { this.day = day; return this; } public String getYear() { return year; } public DateChaining setYear(String year) { this.year = year; return this; } @Override public String toString() { return "DateChaining [year=" + year + ", month=" + month + ", day=" + day + "]"; } }
ChainingTest.java
package test; import main.DateChaining; import static org.junit.Assert.*; import static org.hamcrest.CoreMatchers.*; import org.junit.Test; public class ChainingTest { @Test public void 체이닝_테스트() { //given DateChaining chain = new DateChaining(); //when chain.setYear("2011").setMonth("07").setDay("17"); //then assertThat(chain.getYear(), is("2011")); assertThat(chain.getMonth(), is("07")); assertThat(chain.getDay(), is("17")); } @Test public void 순서흐트러진_체이닝_테스트() { //given DateChaining chain = new DateChaining(); //when chain.setMonth("07").setDay("17").setYear("2011"); //then assertThat(chain.getYear(), is("2011")); assertThat(chain.getMonth(), is("07")); assertThat(chain.getDay(), is("17")); } @Test public void 중복된_필드에대한_세트선언시() { //given DateChaining chain = new DateChaining(); //when // chain.setYear("2011").setMonth("07").setDay("17").setYear("2012"); //then assertNotSame(chain.getYear(), is("2011")); assertThat(chain.getMonth(), is("07")); assertThat(chain.getDay(), is("17")); } }
'Java > Language' 카테고리의 다른 글
자바 음력날짜 얻기 (1) | 2011.10.11 |
---|---|
자바언어의 패키지 코딩 관례 (0) | 2011.08.07 |
The server was expecting token 32 but got the token 33. This is an internal error. (0) | 2011.06.24 |
테스트 케이스에서 Transaction 예외시키는 방법, @Trasactional, @Transactional(propagation=Propagation.NOT_SUPPORTED) (0) | 2011.06.23 |
11번째 JCO, 그 현장을 가다. (0) | 2011.06.20 |