enum
Enum VS String : 외부 API 요청에 대한 응답 수신 코드로 enum을 쓰는게 좋을까?
Enum VS String : 외부 API 요청에 대한 응답 수신 코드로 enum을 쓰는게 좋을까?
2023.07.13상황 1) 외부 API 요청에 대한 응답 수신 코드로 enum을 쓰는게 좋을까? 요약 ) 외부 API 요청에 대한 응답 코드나, 내 API에 대한 요청 코드의 타입은 enum으로 정의하는 것 보다 String으로 정의하고 enum 변환하는게 더 유연하다. (fault tolerance) enum에 정의 되어 있지 않은 값이 응답 코드로 들어올 수 있기 때문에 이에 대한 처리를 생각해 주어야 한다. (e.g., 예고 없이 갑자기 추가된 응답 코드) Exception 발생 해도 상관 없는 경우) 기본적으로 Exception 발생하게 되어 있다. 기본 Exception 메시지에서 @JsonValue 기준 값이 로깅된다. Caused by: com.fasterxml.jackson.databind.exc.Inva..
[Java] 양방향 참조 Enum 초기화 순서에 따른 문제 (순환 참조)
[Java] 양방향 참조 Enum 초기화 순서에 따른 문제 (순환 참조)
2022.04.02취급 대상 품목(Good)은 STONE, ALCOHOL, COMPUTER, SHIP, SUSHI 5가지 이고, 이 중 일부는 목적지(Destination) SEOUL, 일부는 BUSAN으로 보내야 한다. 그리고 목적지에 따라, 해당 목적지로 보내는 품목 리스트를 구할 수 있어야 한다. 그러면 아래와 같이 구현 할 수 있는데... @Getter @RequiredArgsConstructor enum Destination { SEOUL, BUSAN; private static final Map goodsByDestination = Arrays.stream(values()).collect(Collectors.toMap( e -> e, e -> Arrays.stream(Good.values()) .filter(v..
[Java] Enum to Json / Enum to Object
[Java] Enum to Json / Enum to Object
2020.04.27EnumConstant 하나를 `` {fieldName:fieldValue}`` 형식으로 매핑하고 싶은 경우가 있다 ( 주로 뷰로 전달해야 할 때. ) 기본적으로 jackson의 ObjectMapper는 serialize/deserialize 할 때 Enum 코드만 내려주도록 되어 있다. 즉, ``java PaymentCode.CARD``를 변환하면 ``java "CARD"``가 된다. ``java {code=1, koName="카드", enName="card"}`` 형태로 내려주려면, 뭔가 해줘야 한다 방법 1 ) Jackson / ObjectMapper를 사용하고 싶은 경우 방법 1-1 ) @JsonFormat.Shape.OBJECT key:value 쌍을 내려주고 싶은 경우를 대비해 jackson은..
[Effective Java] 6장 enum 타입과 애너테이션 (Annotation)
[Effective Java] 6장 enum 타입과 애너테이션 (Annotation)
2019.12.31[Languages & Frameworks/Kotlin Java] - [Java] Enum 아이템 34. int 상수 대신 enum 타입을 사용하라 Planet.java 자바에서 enum을 뒷받침하는 아이디어는 다음과 같다. enum 타입 자체는 클래스이며, 상수 하나당 자신의 인스턴스를 하나씩 만들어 public static final 필드로 공개한다. ```java public enum Planet { MERCURY(3.3, 2.4); 이는 곧 public enum Planet { public static final Planet MERCURY = new Planet(3.3, 2.4); ``` enum 상수는 값 뿐만 아니라 로직도 가지고 있을 수 있다! abstract를 이용해서. Operation...
[Java] Enum
[Java] Enum
2019.06.06[Effective Java] 6장 열거 타입과 애너테이션 [Java] Enum to Json / Enum to Object https://woowabros.github.io/tools/2017/07/10/java-enum-uses.html enum의 장점은? https://medium.com/@nikitashahu/enum-vs-hashmaps-for-storing-constants-204ef4a1a8d7 code navigator의 도움을 받을 수도 있고, 없는 enum value를 잘못 참조했을 경우 compile time에 잡아낼 수도 있다는 장점도 있음. enum의 단점은? code를 찾아내기 위해 복합키를 사용해야 하는 경우 vs DB) 코드테이블을 사용한다면 PK를 복합키로 지정하여 cons..
[Kotlin] enum / when / sealed
[Kotlin] enum / when / sealed
2017.12.01enum 자바처럼 ``kt enum`` 클래스 안에 프로퍼티나 메소드를 정의할 수 있다. 메소드를 정의하는 경우 상수와 메소드 사이에 반드시 `` ;``를 적어주어야 한다. ```kt enum class Color(val r: Int, val g: Int, val b: Int) { RED(255, 0, 0), ORANGE(255, 165, 0), YELLOW(255, 255, 0), GREEN(0, 255, 0), BLUE(0, 0, 255), INDIGO(75, 0, 130), VIOLET(238, 130, 238); fun rgb() = (r * 256 + g) * 256 + b } >>> Color.RED.ordinal // index 0 >>> Color.RED.r 255 ``` enum은 cla..