enum
[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 VS Map https://medium.com/@nikitashahu/enum-vs-hashmaps-for-storing-constants-204ef4a1a8d7 code navigator의 도움을 받을 수도 있고, 없는 enum value를 잘못 참조했을 경우 compile time에 잡아낼 수도 있다는 장점도 있음. 다만 외부 API의 응답 코드는 enum으로 정의하는 것 보다 String으로 받고 ``kt Map`` 조회하는게 나을 수 있음. enum에..
[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..