일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- IOC
- 링커
- springboot
- String
- exception
- Spring
- Immutable
- DesignPattern
- springwebmvc
- FunctionalInterfaces
- JPA
- ORM
- 빌드툴
- ApplicationContext
- gradle
- 자바
- AutoConfiguration
- beanfactory
- 컴퓨터시스템
- 클린코드
- 메이븐
- DispatcherServlet
- java
- 링킹
- 토비의스프링
- 프록시
- 토비의스프링3.1
- hibernate
- lambda
- Kotlin for Java Developers
- Today
- Total
엔지니어로 가는 길
Java Enum도 하나의 클래스이다 본문
Enum의 정의
Enum(enumerated type): 열거형, 서로 연관된 '상수'들의 집합
상수
상수란 변하지 않는 수를 뜻한다.
Enum도 클래스
변수와 메소드, 생성자를 가질 수 있다.
위의 코드는 아래의 코드와 같은 역할을 한다. 즉, Fruit에서 단순히 APPLE, PEACH, BANANA라고 나열했을 뿐인데 이름이 각각 APPLE, PEACH, BANANA인 Fruit 타입의 객체(instance)가 생성되는 것이다.
Enum은 서로 연관된 '상수'들의 집합이라고 했는데 웬 객체인가? 객체들을 보면 final이라는 키워드가 붙어 있다. 즉, 초기화 된 이후에 변경이 불가능하다는 뜻이다. 따라서 이들은 앞으로 변하지 않음으로 상수라고 할 수 있다.
Enum의 특징
Enum의 생성자는 반드시 package-private 또는 private이어야 한다. 사용자가 Enum 생성자를 직접 호출할 수 없다.
Enum은 아래와 같이 switch문에서 사용할 수 있다.
Enum 사용예제
@Mobile이라는 enum에서 "Samsung(400), Nokia(250), Motorola(325)" 이와 같이 나열했다. 하나만 예시를 들어보면 Samsung(400)이라는 뜻은 Samsung이라는 이름의 Mobile 타입 객체(instance)를 만드는데 Mobile의 생성자에 400을 인자로 전달한다는 의미이다.
@values(): enum의 모든 값들을 포함하는 배열을 리턴하는 static 메소드이다. 값들은 정의된 순서로 정렬되어 있다.
@valueOf(String): String을 인자로 받아 대응되는 enum을 리턴한다. 위의 예제에서 아래와 같이 쓰였다.
Mobile ret;
ret = Mobile.valueOf("Samsung");
객체의 이름을 인자로 받아 해당하는 객체가 존재하면 리턴하는 메소드인 것 같다.
살펴볼 자료들
https://www.geeksforgeeks.org/enum-in-java/
https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html
'프로그래밍 > Java' 카테고리의 다른 글
언어로서의 자바, 플랫폼으로서의 자바 (0) | 2020.03.29 |
---|---|
JAVA 두 개 이상의 정렬 기준을 지원하는 방법: Comparator (0) | 2020.02.08 |
Java ConcurrentModificationException 해결하기 (0) | 2020.02.07 |
Java 객체를 생성하는 방법 (0) | 2020.01.26 |
Java PrintWriter의 println 메소드가 생각대로 작동하지 않는다 (2) | 2020.01.20 |