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 32 33 | public final class Period { //객체의 컴포넌트로는 가능하다면, 변경 불가능한 객체를 사용해야 한다는 점이 핵심이다. private final Date start; private final Date end; // public Period(Date start, Date end) { // if (start.compareTo(end) > 0) { // throw new IllegalArgumentException(start + " After " + end); // } // this.start = start; // this.end = end; // } public Period(Date start, Date end) { //인자 유효성을 검사하기 전에 방어적 복사본을 만든다. this.start = new Date(start.getTime()); this.end = new Date(end.getTime()); if (start.compareTo(end) > 0) { throw new IllegalArgumentException(start + " After " + end); } } //방어적 본사본을 반환하도록 접근자를 수정함 public Date getEnd() { return new Date(end.getTime()); } public Date getStart() { return new Date(start.getTime()); } } | cs |
|
반응형
'프로그래밍 > Java' 카테고리의 다른 글
Java - String (0) | 2015.09.15 |
---|---|
Java - 오버로딩시 주의사항 (0) | 2015.09.15 |
Intellij에서 Java lambda 사용시 Error 해결 (0) | 2015.08.21 |
Java Generic Erasure (0) | 2015.08.01 |
상속에서 다형성 이야기 (0) | 2015.07.28 |