-
[Java] 11주차 과제 : 자바의 열거형Java/온라인 자바 스터디 2021. 1. 24. 15:52반응형
목표
자바의 열거형에 대해 학습하세요.
학습할 것 (필수)
enum 정의하는 방법
enum이 제공하는 메소드 (values()와 valueOf())
java.lang.Enum
EnumSet
enum 정의하는 방법
자바에서는 enum 키워드를 사용하여 열거체를 정의할 수 있다.
문법
enum 열거체이름 {상수1이름, 상수2이름, ...}
예제
enum Rainbow {RED, ORANGE, YELLOW, GREEN, BLUE, INDIGO, VIOLET}
사용
열거체이름.상수이름
예제
Rainbow.RED
열거체의 상수 값 정의 및 추가
정의된 열거체의 첫 번째 상수 값은 0부터 설정되며, 그 다음은 바로 앞의 상수 값보다 1만큼 증가되면 설정된다. 또한, 불규칙한 값을 상수 값으로 설정하고 싶으면 상수의 이름 옆에 괄호(())을 추가하고, 그 안에 원하는 상수 값을 명시할 수 있다. 하지만 이때에는 불규칙한 특정 값을 저장할 수 있는 인스턴스 변수와 생성자를 다음과 같이 별도로 추가해야한다.
12345678910111213141516package enum01;public enum Rainbow {RED(-7), ORANGE(-5), YELLOW(-3), GREEN(1), BLUE(3), INDIGO(5), VIOLET(7);private final int value;Rainbow(int value) {this.value = value;}public int getValue() {return value;}}cs enum이 제공하는 메소드 (values()와 valueOf())
values()
values() 메소드는 해당 열거체의 모든 상수를 저장한 배열을 생성하여 반환한다. values() 메소드는 자바의 모든 열거체에 컴파일러가 자동으로 추가해 주는 메소드이다.
1234567891011121314151617package enum01;enum Rainbow {RED, ORANGE, YELLOW, GREEN, BLUE, INDIGO, VIOLET;}public class EnumValues {public static void main(String[] args) {Rainbow[] rainbowArray = Rainbow.values();for (Rainbow rainbow : rainbowArray) {System.out.println(rainbow);}}}cs valueOf()
valueOf() 메서드는 전달된 문자열과 일치하는 해당 열거체의 상수를 반환한다.
123456789101112131415package enum01;enum Rainbow {RED, ORANGE, YELLOW, GREEN, BLUE, INDIGO, VIOLET;}public class EnumValueOf {public static void main(String[] args) {Rainbow rainbow = Rainbow.valueOf("GREEN");System.out.println(rainbow);}}cs ordinal()
ordinal() 메소드는 해당 열거체 상수가 열거체 정의에서 정의된 순서(0부터 시작)를 반환한다. 이때 반환되는 값은 열거체 정의에서 해당 열거체 상수가 정의된 순서이며, 상수 값 자체가 아님을 명심해야 한다.
123456789101112131415package enum01;enum Rainbow {RED, ORANGE, YELLOW, GREEN, BLUE, INDIGO, VIOLET;}public class EnumOrdinal {public static void main(String[] args) {int idx = Rainbow.GREEN.ordinal();System.out.println(idx);}}cs java.lang.Enum 클래스
Enum 클래스는 모든 자바 열거체의 공통된 조상 클래스이다. Enum 클래스에는 열거체를 조작하기 위한 다양한 메소드가 포함되어 있다.
대표적인 Enum 메소드
메서드
설명
static E values()
해당 열거체의 모든 상수를 저장한 배열을 생성하여 반환한다.
static E valueOf(String name)
전달된 문자열과 일치하는 해당 열거체의 상수를 반환한다.
protected void finalize()
해당 Enum 클래스가 final 메소드를 가질 수 없다.
String name()
해당 열거체 상수의 이름을 반환한다.
int ordinal()
해당 열거체 상수가 열거체 정의에서 정의된 순서(0부터 시작)를 반환한다.
EnumSet
EnumSet은 다른 컬렉션들과 다르게 new 연산자 사용이 불가능하며, 정적 팩토리 메소드(static factory method)만으로 EnumSet의 구현 객체를 반환받을 수 있다.
EnumSet 사용법
1234567891011121314151617package enum01;import java.util.EnumSet;enum RainBow_example {RED, ORANGE, YELLOW, GREEN, BLUE, INDIGO, VIOLET;}public class EnumSetExample {public static void main(String[] args){EnumSet<Rainbow> enumSet = EnumSet.allOf(Rainbow.class);System.out.println("Rainbow : " + enumSet);}}cs 반응형'Java > 온라인 자바 스터디' 카테고리의 다른 글
[JAVA] 14주차 과제 : 제네릭 (0) 2021.07.04 [JAVA] 13주차 과제 : I/O (0) 2021.07.04 [Java] 10주차 과제 : 자바의 멀티쓰레드 프로그래밍 (0) 2021.01.23 [Java] 9주차 과제 : 자바의 예외 처리 (0) 2021.01.17 [Java] 8주차 과제 : 자바의 인터페이스 (0) 2021.01.16