public enum TableStatus {
    Y("1", true),
    N("0", false);
    
    private String table1Value;
    private boolean table2Value;
    
    TableStatus(String table1Value, boolean table2Value) {
        this.table1Value = table1Value;
        this.table2Value = table2Value;
    }
}

 

Enum의 값 "Y", "N"에 따라 table1Value, table2Value의 값을 반환해주는 별도의 메소드를 선언하는 대신 Enum 클래스에서 위와 같이 묶어서 관리할 수 있다.

 

자바8 Function 참고

 

Java 8 - Function 예제

Java 8의 Function은 1개의 인자(Type T)를 받고 1개의 객체(Type R)를 리턴하는 함수형 인터페이스입니다. 다음 예제는 Function 구현 및 apply()가 어떻게 동작하는지 알려줍니다. 다음 예제는 andThen()이 어

codechacha.com

 

Enum 클래스로 상태 코드를 조회하고 각각의 코드에 따른 로직을 별도의 메소드를 통해 수행을 하도록 만들면 상태 코드의 조회와 코드에 따른 계산이 분리되어서 서로 관계가 있음을 표현할 수가 없다. 그래서 다음과 같이 Enum 클래스를 활용하여 계산 기능을 추가할 수 있다.

 

public enum CalculatorType {
    CALC_A(value -> value),
    CALC_B(value -> value * 10),
    CALC_C(value -> value * 3),
    CALC_ETC(value -> 0L);
    
    private Function<Long, Long>. expression;
    
    CalculatorType(Function<Long, Long> expression) {
        this.expression = expression;
    }
    
    public long calculate(long value) {
        return expresiion.apply(value);
    }
}

 

Function은 value1을 받아서 value2로 반환해주는 역할을 하며 apply()를 통해 인자값을 받으면 계산식을 거쳐서 결과를 반환 받을 수 있다.

 

핵심은 객체가 상태(값)와 행위(로직)을 갖고 있는 것으로 직접 활용을 안 해봐서 100% 이해는 못 했지만 이번 프로젝트에서 적절하게 적용해보고 직접 적용해본 내용을 정리해보면 좋을 것 같다.

 

 

 

Java Enum 활용기 | 우아한형제들 기술블로그

{{item.name}} 안녕하세요? 우아한 형제들에서 결제/정산 시스템을 개발하고 있는 이동욱입니다. 이번 사내 블로그 포스팅 주제로 저는 Java Enum 활용 경험을 선택하였습니다. 이전에 개인 블로그에 E

techblog.woowahan.com

 

Legacy DB의 JPA Entity Mapping (Enum Converter 편) | 우아한형제들 기술블로그

{{item.name}} 안녕하세요. 저는 우아한형제들 비즈상품개발팀의 이은경입니다. Legacy DB의 JPA Entity Mapping (복합키 매핑 편)에 이어 저는 DB의 코드값과 Java Enum을 연결해주는 과정에서 유용하게 사용

techblog.woowahan.com

 

 

Enum 활용사례 3가지

안녕하세요? 이번 시간엔 enum 활용사례를 3가지정도 소개하려고 합니다. 모든 코드는 Github에 있기 때문에 함께 보시면 더 이해하기 쉬우실 것 같습니다. (공부한 내용을 정리하는 Github와 세미

jojoldu.tistory.com

 

+ Recent posts