문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
java:enum [2016/03/21 23:19] kwon37xi |
java:enum [2022/11/02 09:59] (현재) kwon37xi [Java enum] |
||
---|---|---|---|
줄 1: | 줄 1: | ||
====== Java enum ====== | ====== Java enum ====== | ||
+ | ===== name() 기반 조회가 많을 경우 ===== | ||
+ | * '' | ||
+ | <code java> | ||
+ | public enum MyEnum { | ||
+ | BAR, | ||
+ | BAZ; | ||
+ | // 외부에서는 MAP에 접근이 불가능해야한다. | ||
+ | private static final Map< | ||
+ | |||
+ | public static MyEnum fromName(String name){ | ||
+ | return MAP.get(name); | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | https:// | ||
===== 자기 참조 enum - Self referential enum ===== | ===== 자기 참조 enum - Self referential enum ===== | ||
enum이 enum 생성자에서 동일 enum의 다른 값을 참조해야하는 경우가 발생할 수 있는데, 아직 초기화가 안된 다른 값을 참조하는 것은 문법적으로 불가하다. | enum이 enum 생성자에서 동일 enum의 다른 값을 참조해야하는 경우가 발생할 수 있는데, 아직 초기화가 안된 다른 값을 참조하는 것은 문법적으로 불가하다. | ||
줄 59: | 줄 74: | ||
A, B, Y, Z; | A, B, Y, Z; | ||
+ | // 외부에서 접근, 변경 불가능하도록 private으로 선언. | ||
private static final Map< | private static final Map< | ||
- | static | + | static { |
- | | + | opposites = new EnumMap<> |
- | opposites = new EnumMap<Flippable, Flippable> | + | |
opposites.put(A, | opposites.put(A, | ||
opposites.put(B, | opposites.put(B, | ||
줄 71: | 줄 86: | ||
// 모두 올바르게 값 설정이 되었는지 검증 | // 모두 올바르게 값 설정이 되었는지 검증 | ||
for (Flippable f : Flippable.values()) { | for (Flippable f : Flippable.values()) { | ||
- | if (f.flip().flip() != f) | + | if (f.flip().flip() != f) { |
- | | + | |
throw new IllegalStateException(" | throw new IllegalStateException(" | ||
} | } | ||
줄 78: | 줄 92: | ||
} | } | ||
- | public Flippable flip() | + | public Flippable flip() { |
- | | + | |
return opposites.get(this); | return opposites.get(this); | ||
} | } |