-
Enum Type ( 열거형 )JAVA 2021. 10. 26. 16:14
프로젝트 진행중 enum타입 데이터에 여러 정보를 추가해서 사용하였다.
Enum
@Getter public enum Level { // Starter, Bronze, Silver, Gold, Master Starter("Starter", 0,0), Bronze("Bronze",1, 299), Silver("Silver", 300,999), Gold("Gold", 1000,2999), Master("Master",3000,2147483647); private final String name; private final Integer min; private final Integer max; Level(String name, Integer min, Integer max) { this.name = name; this.min = min; this.max = max; } public Integer getGap(){ return max-min; } }
enum이란 상수값을 정의한 다음 그외의 값은 허용하지 않는 값의 타입이다. ( public static final )
enum은 완전한 클래스이며(data와 method를 가질 수 있다) 상수 하나당 인스턴스를 생성하여 public static final필드로 공개하고, 생성자 접근지정자가 private으로 singleton을 보장한다. (밖에서 접근할 수 있는 생성자가 없다)
valueof(String name), valueof(Class<T> enumtype, String name)
Enum타입에 전달된 문자열과 일치하는 해당 열거체의 상수를 반환한다.
values()
@GetMapping("/levels") public List<LevelDTO> getLevels(){ List<LevelDTO> levels = Arrays.stream(Level.values()).map(level -> new LevelDTO(level)).collect(Collectors.toList()); return levels; }
모든 요소들을 배열로 반환한다.
EnumSet()
Enum타입의 Set 자료구조를 구현할 때는 EnumSet이 enum 단일객체를 보장하여 해싱작업을 하지 않기 때문에 HashSet보다 성능이 좋으므로 EnumSet을 사용하는 것이 좋다.
(참고한 사이트)
http://tcpschool.com/java/java_api_enum
'JAVA' 카테고리의 다른 글
인프런) 실습으로 배우는 선착순 이벤트 시스템 (1) 2024.06.05 인프런) 재고시스템으로 알아보는 동시성 이슈 해결 (2) (1) 2024.06.05 인프런) 재고시스템으로 알아보는 동시성 이슈 해결 (1) (0) 2024.06.04 가비지 컬렉션 GC(Garbage Collection) (0) 2022.08.05