2017-12-15 21 views
0

Java 클래스를 만들 때 getter 및 setter 메서드를 항상 구현해야합니까? 어떤 경우에는 다른 클래스가 setter 메서드를 통해 클래스 변수를 변경할 수 없지만 이러한 메서드 내부에서 입력 유효성 검사를 구현하는 한 해당 클래스를 포함하는 것이 항상 적절한 지 이해합니다.Java 클래스에서 Getter 및 Setter 메서드를 구현하는 데 항상 적절합니까?

게터 및 설정 메소드를 항상 포함하는 것은 적절하지 않은 경우 특별히 구현해야하는 시점과 구현하지 않을 시점에 대한 지침을 제공하십시오.

+1

재미있는 읽기 https://dev.to/scottshipp/avoid-getters-and-setters-whenever-possible-c8m – StaticBeagle

답변

3

간략히 말하자면, 굳건한 규칙은 없습니다.

다른 클래스가 액세스 할 필요가 있다고 생각되면 필드에 대한 getter를 포함합니다. 완전히 수업의 내부에있는 필드에 대한 getter가 없으면 노출 될 의도가 없습니다. getter가 필드 자체가 아닌 일부 수정 된 형식 또는 내부의 불변 사본 (예 : 내부 List 필드)을 반환하도록하는 것이 좋습니다.

다른 클래스가 필드를 변경할 수있는 자유로운 액세스가 필요하다고 생각되는 경우 설정기를 포함하십시오. setter를 생략하면 기본적으로 필드가 읽기 전용이됩니다. 기존 설정 도구 대신 필드를 변형하는 맞춤 메소드를 포함하도록 선택할 수도 있습니다 (예 : add()List 또는 Set에 값을 추가하는 방법). 모든 접근법은 상황에 따라 전적으로 적절합니다.

편집 : 변경 "속성"기존의 용어와 일치 "필드"에

+0

메모로서, getters/setter의 존재는 * 속성 *을 단지 필드와 구별합니다 . – chrylis

1

IMO 클래스는 불변 인 경우, 당신은 세터가 필요하지 않습니다

; 나는 필드를 최종적으로 만드는 한 getter가 선택 적이라고 생각할 것입니다.

클래스가 변경 가능한 경우 특히 변형 될 수있는 입력란의 경우 getter와 setter가 모두 필요합니다.

여기 내 대답은 내 의견처럼 경험/의견을 기반으로합니다.