접근자

    적시에 방어적 복사본을 만들라 - [8장. 메서드(아이템50)]

    자바는 일반적으로 안전한 언어다. 하지만 아무리 자바라 해도 다른 클래스로부터의 침범을 아무런 노력 없이 다 막을 수 있는 것은 아니다. 그렇기 때문에 클라이언트가 우리의 불변식을 깨뜨리려 혈안이 되어 있다고 가정하고 방어적으로 프로그래밍해야 한다. 📙 1. 첫 번째 공격 - 생성자 이용 '시작 시각이 종료 시각보다 늦을 수 없다는 불변식'이 있는 다음과 같은 클래스가 있다고 하자. public final class Period { private final Date start; private final Date end; /** * @param start 시작 시각 * @param end 종료 시각; 시작 시각보다 뒤여야 하낟. * @throws IllegalArgumentException 시작 시각이 종..

    public 클래스에서는 public 필드가 아닌 접근자 메서드를 사용하라 - [4장. 클래스와 인터페이스(아이템16)]

    제목에서와 같이 public 클래스를 사용할 경우 public 필드가 아닌 접근자 메서드를 사용하는 것을 권장하고 있다. 1. public 클래스에서 public 필드를 사용했을 경우의 문제점 🥞 public class Point { public double x; public double y; } 위와 같은 클래스는 데이터 필드에 직접 접근할 수 있으므로 캡슐화의 이점을 제공하지 못한다. 그에 따라서 다음과 같은 문제점을 가지게 된다. API를 수정하지 않고는 내부 표현을 바꿀 수 없다. 불변식을 보장할 수 없다. 외부에서 필드에 접근할 때 부수 작업을 수행할 수 없다. 2. public 클래스에서 접근자 메서드를 사용했을 경우의 이점 🧇 public class Point { private double ..