더북(TheBook)

2.2.4 프로퍼티 생성자 오버로드하기

필수가 아닌 프로퍼티에 기본 값이 있는 경우가 있다. 앞의 예제를 보고, Person 인스턴스 registered의 기본 값을 이 인스턴스가 생성된 시간으로 설정할 수 있다. 이럴 때 자바에서는 다음과 같이 두 가지 생성자를 사용해야 한다.

예제 2-1 선택적인 프로퍼티가 있는 전형적인 자바 객체

public final class Person {
    private final String name;
    private final Instant registered;

<span class="sgc-1">public</span> <span class="sgc-3">Person(String</span> <span class="sgc-3">name,</span> <span class="sgc-3">Instant</span> <span class="sgc-3">registered)</span> <span class="sgc-3">{</span>
    <span class="sgc-1">this</span><span class="sgc-3">.name</span> <span class="sgc-3">=</span> <span class="sgc-3">name;</span>
    <span class="sgc-1">this</span><span class="sgc-3">.registered</span> <span class="sgc-3">=</span> <span class="sgc-3">registered;</span>
<span class="sgc-3">}</span>

<span class="sgc-1">public</span> <span class="sgc-3">Person(String</span> <span class="sgc-3">name)</span> <span class="sgc-3">{</span>
    <span class="sgc-1">this</span><span class="sgc-3">(name,</span> <span class="sgc-3">Instant.now());</span>
<span class="sgc-3">}</span>

<span class="sgc-1">public</span> <span class="sgc-3">String</span> <span class="sgc-3">getName()</span> <span class="sgc-3">{</span>
    <span class="sgc-1">return</span> <span class="sgc-3">name;</span>
<span class="sgc-3">}</span>

<span class="sgc-1">public</span> <span class="sgc-3">Instant</span> <span class="sgc-3">getRegistered()</span> <span class="sgc-3">{</span>
    <span class="sgc-1">return</span> <span class="sgc-3">registered;</span>
<span class="sgc-3">}</span>

}

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.