Effective Java 3/E를 공부하며 작성한 글입니다. 혼자 공부하고 정리한 내용이며, 틀린 부분은 지적해주시면 감사드리겠습니다 😀 클래스가 어떤 인터페이스를 구현한다는 것은 자신의 인스턴스로 무엇을 할 수 있는지를 클라이언트에 얘기해주는 것이다. 상수 인터페이스 상수 인터페이스란, 상수를 뜻하는 static final 필드로 가득찬 인터페이스를 의미한다. 이 상수들을 사용하려는 클래스에서는 정규화된 이름을 쓰는걸 피하고자 그 인터페이스를 구현하곤 한다. public interface PhysicalConstants { // 아보가드로 수 (1/몰) static final double AVOGADROS_NUMBER = ...; // 볼츠만 상수 (J/K) static final double BOL..
Effective Java 3/E를 공부하며 작성한 글입니다. 혼자 공부하고 정리한 내용이며, 틀린 부분은 지적해주시면 감사드리겠습니다 😀 Java8에서 부터 기존 인터페이스에 default 메소드를 추가할 수 있게 되었다. 이 메소드를 선언하면, 그 인터페이스를 구현한 후 디폴트 메소드를 재정의하지 않은 모든 클래스에서 디폴트 구현이 쓰이게 된다. 디폴트 메소드 public interface Calculator { int sum(int num1, int num2); int minus(int num1, int num2); default int multiple(int num1, int num2) { return num1 * num2; } } public class EngineeringCalc impleme..
Effective Java 3/E를 공부하며 작성한 글입니다. 혼자 공부하고 정리한 내용이며, 틀린 부분은 지적해주시면 감사드리겠습니다 😀 Comparable Comparable 인터페이스를 살펴보면 compareTo라는 추상 메소드 하나만 존재한다. public interface Comparable { public int compareTo(T o); } 이름과 같이 매개변수로 들어온 것과 자신을 비교하는 것이다. 아래 차이점을 제외하면 Object.equals()와 동일한 기능을 한다. 단순 동치성 비교 순서 비교 + 제네릭 즉, Comparable을 구현했다는 것은 그 클래스의 인스턴스들에는 자연적인 순서(natural order)가 있음을 뜻한다. public class ComparableTest ..
Effective Java 3/E를 공부하며 작성한 글입니다. 혼자 공부하고 정리한 내용이며, 틀린 부분은 지적해주시면 감사드리겠습니다 😀 간혹 우리는 기존 객체의 값을 그대로 가진 새로운 객체를 생성해 사용해야할 경우가 있다. 이럴 때, clone() 메소드를 이용하면 효율적으로 생성할 수 있지만, 해당 메소드는 Object 클래스 내부에 선언되어 있다. public class Object { @IntrinsicCandidate protected native Object clone() throws CloneNotSupportedException; } @IntrinsicCandidate란, 구현을 JVM 상에서 해주는 부분을 명시하는 어노테이션이다. 즉, JVM 종류에 따라 구현이 달라지게 되고, nat..