반응형

enum

    [번역] 2-2. Domain 모델 (Enum, UUID, Date, Attribute, Generated Properties)

    2.3.7 Enums 매핑 Hibernate는 기본값 유형으로써 다양한 방법으로 Java Enum의 매핑을 지원한다. @Enumrated 기본적인 JPAdml enums의 매핑 방법은 @Enumrated 또는 @MapKeyEnumrated 애노테이션을 통해 javax.persistence.EnumType에 표시된 두 가지 전략 중 하나에 따라 enum 값이 저장된다는 원칙에 따라 동작한다. ORDINAL - java.lang.Enum#ordinal에 기재된대로 Enum 클래스 내에서 Enum값의 순서에 따라 저장된다 STRING - java.lang.Enum#name 방식에 기재에 따라 Enum값의 이름에 따라서 저장된다. 아래 예시로 PhoneType이라는 Enum이 있다고 가정해보자. public e..

    Enum - 규칙 34 확장 가능한 enum을 만들어야 한다면 인터페이스를 이용하라.

    연산자를 정의해둔 Enum을 사용할 때 더많은 유형의 자료형을 사용하기 위해서 기존의 enum객체를 계승해서 작성하고 싶을 수 있다. 하지만 enum 자료형은 계승해서 사용하는 방법은 어렵다. 왜냐하면 모든 Enum 객체들은 함축적으로 Enum 객체를 상속받고 있다. 자바에서는 클래스는 하나이상의 부모를 가질 수 없으므로, enum 객체는 추가 상속이 어렵다. 그렇기에 인터페이스를 먼저 구현하고 그에 맞게 enum을 구현할 수 있도록 인터페이스를 활용하는 방식으로 대처할 수 있다. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676..

    Enum - 규칙 33 ordinal을 배열 첨자로 사용하는 대신 EnumMap을 이용하라.

    Enum 상수별로 특정정보들을 저장하고 싶을 때 EnumMap을 사용한다. 12345678910111213141516Class Fruit { enum Type { APPLE, BANANA, PEAR } final String name; final Type type; Fruit(String name, Type type) { this.name = name; this.type = type; }} Map fruitByType = new EnumMap(Herb.Type.class);for (Fruit.Type t : Fruit.Type.values()) { fruitByType.put(t, new HashSet());}Colored by Color Scriptercs EnumMap을 사용하면 깔끔하고 안전하며, ..

    Enum - 규칙 32 비트 필드(bit field) 대신 EnumSet을 사용하라.

    123456789public class Text { public static final int STYLE_BOLD = 1

    Enum - 규칙 31 ordinal 대신 객체 필드를 사용하라.

    Enum 상수에는 그 순서에 맞는 int 값이 반환된다. 1234567891011public enum Fruit { APPLE, BANANA, PEAR;} public class Main { public static void main (String args[]) { System.out.println(Fruit.BANANA.ordinal()); }} // 출력결과 1Colored by Color Scriptercs 하지만 이렇게 Enum의 oridnal 기능을 사용하는 것은 단점이 있다. 1. 상수 순서를 변경하게 되면 순서를 사용하던 곳에서 문제가발생할 수 있다. 2. 이미 사용한 정수값에 대응하는 새로운 enum 상수를 정의하는 것이 불가능 하다. 3. ordinal 간격이 1이 아닌 2나 3정도의 간..

    Enum - 규칙 30 int 상수 대신 enum을 사용하라.

    기존의 프로젝트에서 자주 사용 사용하는 설정 값이나 이름들을 열거 자료형으로서 다음같이 사용했다. 1234567// int를 사용한 enum 패턴public static final int FAIL = 1;public static final int SUCCESS = 2; // string을 사용한 enum 패턴public static final String FEMAIL = "3";public static final String MAIL = "4";cs int를 사용한 설정 값은 int enum 패턴, 문자열로 되어 있는 경우에는 string enum 패턴 이라고 한다. 하지만 이런 설정은 다음과 같은 단점이 있다. 1. 편의성이 떨어진다. 2. 이는 컴파일 시점 상수(compile-time constant..

    객체의 생성과 삭제 - 규칙 3 private 생성자나 enum 자료형은 싱글톤 패턴을 따르도록 설계하라.

    1234567891011121314package practice; public class SingleTone {public static SingleTone INSTANCE; public static synchronized SingleTone getInstance() {if ( INSTANCE == null ) {INSTANCE = new SingleTone();}return INSTANCE;} private SingleTone() {}}Colored by Color Scriptercs 기존에 싱글톤 패턴을 사용할 때 다음과 같이 생성해 주었다. 하지만 이런 형태로 만들 시 private 생성자를 생성하였다 해도 java reflection 성질을 이용하여 객체를 생성 할 수있다. 그리고 INSTANCE ..

반응형