woodisco 2024. 3. 5. 11:53

 

enum

Enum은 "열거형"이라고 불리며, 프로그래밍에서 사용되는 데이터 형식 중 하나입니다. 열거형은 특정한 값들의 집합을 정의할 때 유용하게 활용됩니다. 보통 상수들의 집합으로 이루어져 있으며, 이러한 상수들은 일련의 식별자로 사용됩니다. 열거형을 사용하면 코드의 가독성과 유지보수성을 향상시킬 수 있습니다. 
예를 들어, 계절을 열거형으로 정의한다고 가정해 봅시다. 봄(Spring), 여름(Summer), 가을(Fall), 겨울(Winter)이 각각의 상수로 정의될 수 있습니다. 이렇게 하면 코드에서 계절을 다룰 때 상수를 사용하여 가독성을 높일 수 있습니다.

public enum Season {
    SPRING,
    SUMMER,
    FALL,
    WINTER
}
public class Main {
    public static void main(String[] args) {
        Season currentSeason = Season.SUMMER;

        switch (currentSeason) {
            case SPRING:
                System.out.println("봄입니다.");
                break;
            case SUMMER:
                System.out.println("여름입니다.");
                break;
            case FALL:
                System.out.println("가을입니다.");
                break;
            case WINTER:
                System.out.println("겨울입니다.");
                break;
            default:
                System.out.println("잘못된 계절입니다.");
        }
    }
}

public enum Enum_TypeCode {

    // A
    테스트1("test1"),
    테스트2("test2"),

    // B
    테스트3("test3"),
    테스트4("test4"),
    
    ;

    private final String propertyName;

    Enum_TypeCode(String name) {
        propertyName = name;
    }

    // 영어를 한국어로 변환
    public static String toName(String eCode) {
        Optional<Enum_TypeCode> kCode = Arrays.stream(Enum_TypeCode.values()).filter(enumfilter -> enumfilter.toString().equals(eCode)).findFirst();
        return kCode.isPresent() ? kCode.get().name() : "";
    }

    public static final Map<String, Enum_TypeCode> Map_Test;


    static {
        Map<String, Enum_TypeCode> mutableMap = new HashMap<>();

        // A
        mutableMap.put(Enum_TypeCode.테스트1, 테스트1);
        mutableMap.put(Enum_TypeCode.테스트2, 테스트2);


        // B
        mutableMap.put(Enum_TypeCode.테스트3, 테스트3);
        mutableMap.put(Enum_TypeCode.테스트4, 테스트4);
        Map_Test = Collections.unmodifiableMap(mutableMap);
    }

    // 영어 반환
    public static String toTypeCode(String type) {
        Enum_TypeCode typeCode =  Map_Test.get(type);
        return typeCode != null ? typeCode.propertyName : "";
    }

    @Override
    public String toString() {
        return propertyName;
    }
}