728x90
반응형

enum 5

[Effective Java] 아이템 38. 확장할 수 있는 열거 타입이 필요하면 인터페이스를 사용하라.

🎯 아이템 38. 확장할 수 있는 열거 타입이 필요하면 인터페이스를 사용하라. 인터페이스를 이용해 확장 가능 열거 타입을 흉내 냈다. public interface Operation { double apply(double x, double y); } public enum BasicOperation implements Operation{ PLUS("+") { public double apply(double x, double y) { return x + y; } }, MINUS("-") { public double apply(double x, double y) { return x - y; } }, TIMES("*") { public double apply(double x, double y) { return ..

Java 2023.03.21

[Effective Java] 아이템 37. ordinal 인덱싱 대신 EnumMap을 사용하라.

🎯 아이템 37. ordinal 인덱싱 대신 EnumMap을 사용하라. public class Plant { enum LifeCycle { ANNUAL, PERENNIAL, BIENNIAL } final String name; final LifeCycle lifeCycle; Plant(String name, LifeCycle lifeCycle) { this.name = name; this.lifeCycle = lifeCycle; } @Override public String toString() { return name; } } ordinal()을 배열 인덱스로 사용 - 따라 하지 말 것! public static void main(String[] args) { Plant[] garden = { new P..

Java 2023.03.21

[Effective Java] 아이템 35. ordinal 메서드 대신 인스턴스 필드를 사용하라.

🎯 아이템 35. ordinal 메서드 대신 인스턴스 필드를 사용하라. 열거 타입은 해당 상수가 그 열거 타입에서 몇 번째 위치인지를 반환하는 ordinal이라는 메서드를 제공한다. public enum RoleType { USER, ADMIN; } @Entity public class Member { @Id private Long id; @Column(name = "name") private String username; private Integer age; @Enumerated(EnumType.ORDINAL) private RoleType roleType; } 위 처럼 javax.persistence에서 제공하는 타입을 enum으로 지정하는 @Enumerated을 제공해준다. @Enumerated 애..

Java 2023.03.21

[Effective Java] 아이템 34. int 상수 대신 열거 타입을 사용하라.

🎯 아이템 34. int 상수 대신 열거 타입을 사용하라. 정수 열거 패턴 - 상당히 취약하다! public class IntegerConstants { public static final int APPLE_FUJI = 0; public static final int APPLE_PIPPIN = 1; public static final int APPLE_GRANNY_SMITH = 2; public static final int ORANGE_NAVEL = 0; public static final int ORANGE_TEMPLE = 1; public static final int ORANGE_BLOOD = 2; } 위 같은 정수 열거 패턴은 타입 안전을 보장할 방법이 없으며 표현력도 좋지 않다. 오렌지를 건네..

Java 2023.03.21
728x90
반응형