Java 12

ITEM15 클래스와 멤버의 접근권한을 최소화 하라.

모든 클래스와 멤버의 접근성을 가능한 한 좁혀야 한다는 것은, 소프트웨어가 올바로 동작하는 한 항상 가장 낮은 접근 수준을 부여해야 한다는 뜻이다. 멤버(필드, 메서드, 중첩 클래스, 중첩인터페이스)에 부여할 수 있는 접근 수준은 4가지다. private : 멤버를 선언한 톱래벨 클래스에서만 접근할 수 있다. package-private : 멤버가 소속된 패키지 안의 모든 클래스에서 접근할 수 있다. 접근 제한자를 명시하지 않았을때 적용되는 패키지 수준이다.(단, 인터페이스의 멤버는 기본적으로 public 이 적용된다.) protected : package-private 의 접근 범위를 포함하며, 이 멤버를 선언한 클래스의 하위클래스에서도 접근 할 수 있다. public : 모든곳에서 접근할 수 있다.

ITEM14 comparable 을 구현할지 고려하라

요점 compareTo 는 object 의 메서드가 아니다. 단순 동치성 비교에 더해 순서까지 비교할 수 있으며, 제네릭하고, equals 와 같다. 알파벳, 숫자, 연대 같이 순서가 명확한 값 클래스를 작성한다면 반드시 comparable 인테페이스를 구현하자. 일반규약 이 객체와 주어진 객체의 순서를 비교한다. 이 객체가 주어진 객체보다 작으면 음의 정수를, 같으면 0을 , 크면 양의 정수를 반환한다. 이 객체와 비교할 수 없는 타입의 객체가 주어지면 ClassCastException 을 던진다. Comparable 을 구현한 클래스는 모든 x, y에 대해 sgn(x.compareTo(y)) = - sgn(y.compareTo(x))여야 한다. Comparable 을 구현한 클래스는 추이성을 보장해야..