유틸리티 클래스
-
Item 22. 인터페이스는 타입을 정의하는 용도로만 사용하라Book/Effective Java 3E 2022. 11. 2. 21:00
인터페이스는 자신을 구현한 클래스의 인스턴스를 참조할 수 있는 타입 역할을 합니다. 인터페이스는 오직 이 용도로만 사용해야 합니다. 아래 상수 인터페이스 안티패턴은 인터페이스를 잘못 사용한 예입니다. package effectivejava.chapter4.item22.constantinterface; // 코드 22-1 상수 인터페이스 안티패턴 - 사용금지! public interface PhysicalConstants { // 아보가드로 수 (1/몰) static final double AVOGADROS_NUMBER = 6.022_140_857e23; // 볼츠만 상수 (J/K) static final double BOLTZMANN_CONSTANT = 1.380_648_52e-23; // 전자 질량 (..
-
Item 4. 인스턴스화를 막으려거든 private 생성자를 사용하라Book/Effective Java 3E 2022. 10. 7. 08:59
정적 메서드와 정적 필드만을 담은 클래스(java.lang.Math와 java.util.Arrays처럼 기본 타입 값이나 배열 관련 메서드들, java.util.Collections처럼 특정 인터페이스를 구현하는 객체를 생성해주는 정적 메서드(혹은 팩터리), final 클래스와 관련한 메서드들을 모아놓을 때 사용)는 인스턴스로 만들어 쓰려고 설계한 게 아닙니다. 하지만 생성자를 명시하지 않으면 컴파일러가 자동으로 기본 생성자를 만들어줍니다. 즉, 매개변수를 받지 않는 public 생성자가 만들어집니다. private 생성자를 추가하면 클래스의 인스턴스화를 막을 수 있습니다. package effectivejava.chapter2.item4; // 코드 4-1 인스턴스를 만들 수 없는 유틸리티 클래스 pu..