English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
이 튜토리얼에서는 Java의 열거를 배웁니다. 예제를 통해 열거와 열거 클래스를 생성하고 사용하는 방법을 배웁니다.
Java에서 열거는 고정된 가능 값 집합을 가진 타입입니다. 우리는 enum 키워드를 사용하여 열거를 선언합니다. 예를 들어,
enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE {}
여기서는 Size라는 열거를 생성했습니다.
구현 안에 있는 값은 열거 값(상수)으로 불립니다. 이는 열거 타입이 유지할 수 있는 독특한 값입니다.
주의:열거 상수는 일반적으로 대문자로 표시됩니다.
간단한 예제를 들어보겠습니다.
enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE {} class Main { public static void main(String[] args) { System.out.println(Size.SMALL); System.out.println(Size.MEDIUM); {} {}
출력 결과
SMALL MEDIUM
위의 예제에서 볼 수 있듯이, 우리는 상수 값에 접근하기 위해 열거 이름을 사용합니다.
또한, 열거형 타입의 변수를 생성할 수 있습니다. 예를 들어,
Size pizzaSize;
여기서 pizzaSize는 Size 타입의 변수입니다. 그것은 다음 값 중 하나만 할당할 수 있습니다4개의 값.
pizzaSize = Size.SMALL; pizzaSize = Size.MEDIUM; pizzaSize = Size.LARGE; pizzaSize = Size.EXTRALARGE;
enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE {} class Test { Size pizzaSize; public Test(Size pizzaSize) { this.pizzaSize = pizzaSize; {} public void orderPizza() { switch(pizzaSize) { case SMALL: System.out.println("저는 작은 피자를 주문했습니다."); break; case MEDIUM: System.out.println("저는 중형 피자를 주문했습니다."); break; default: System.out.println("나는 어떤 것을 주문해야 할지 모르겠어."); break; {} {} {} class Main { public static void main(String[] args) { Test t1 = new Test(Size.MEDIUM); t1.orderPizza(); {} {}
출력 결과
저는 중형 피자를 주문했습니다.
위 프로그램에서는 열거형 타입 Size를 생성했습니다. 그런 다음 Size 타입의 변수 pizzaSize를 선언했습니다.
변수 pizzaSize는 다음 값 중 하나만 할당할 수 있습니다4개의 값(SMALL, MEDIUM, LARGE, EXTRALARGE).
변수 pizzaSize에 MEDIUM 상수가 할당되었습니다. 이에 따라 switch case 문의 한 경우를 출력합니다.
Java에서 열거형 타입은 클래스의 특별한 유형으로 간주됩니다. 이는 Java 5발행 버전에서 도입됨.
열거형 클래스는 일반 클래스와 같이 메서드와 필드를 포함할 수 있습니다.
enum Size { constant;1, constant;2, …, constantN; //메서드와 필드 {}
열거형 상수는 항상 default로 public static final로 설정됩니다.
enum 클래스를 생성할 때, 컴파일러는 각 enum 상수의 인스턴스(객체)를 생성합니다.
enum Size{ SMALL, MEDIUM, LARGE, EXTRALARGE; public String getSize() { //이는 OBJECT.SMALL을 참조합니다 switch(this) { case SMALL: return "small"; case MEDIUM: return "medium"; case LARGE: return "large"; case EXTRALARGE: return "extra large"; default: return null; {} {} public static void main(String[] args) { //SMALL 객체를 사용하여 메서드 getSize()를 호출합니다 System.out.println("피자의 크기는 " + Size.SMALL.getSize()); {} {}
출력 결과
피자의 크기는 small입니다
위의 예제에서는 Size라는 열거형 클래스를 생성했습니다. 이 클래스는 SMALL, MEDIUM, LARGE, EXTRALARGE라는 네 개의 상수를 가집니다.
Size는 열거형 클래스이므로 컴파일러는 각 열거형 상수에 대해 자동으로 인스턴스를 생성합니다.
main() 메서드 내에서는 SMALL 인스턴스를 사용하여 getSize() 메서드를 호출했습니다.
일반 클래스와 마찬가지로 열거형 클래스도 생성자를 포함할 수 있습니다. 자세한 정보는 다음을 참조하십시오Java 열거형 생성자.
열거형 클래스에는 언제든지 사용할 수 있는 몇 가지 предопределенные 메서드가 있습니다.
ordinal() 메서드는 열거형 상수의 위치를 반환합니다. 예를 들어,
ordinal(SMALL) //0을 반환합니다
compareTo() 메서드는 순서 값을 기준으로 열거형 상수를 비교합니다. 예를 들어,
Size.SMALL.compareTo(Size.MEDIUM) //ordinal(SMALL)을 반환합니다 - ordinal(MEDIUM)
toString() 메서드는 열거형 상수의 문자열 표현을 반환합니다. 예를 들어,
SMALL.toString() //"SMALL"을 반환합니다
name() 메서드는 열거형 상수의 정의 이름을 문자열 형태로 반환합니다. name() 메서드가 반환하는 값은 final입니다. 예를 들어,
name(SMALL) //"SMALL"을 반환합니다
valueOf() 메서드는 문자열을 사용하여 동일한 문자열 이름을 가진 열거형 상수를 반환합니다. 예를 들어,
Size.valueOf("SMALL") //상수 SMALL을 반환합니다
values() 메서드는 모든 열거형 상수를 포함한 열거형 유형 배열을 반환합니다. 예를 들어,
Size[] enumArray = Size.value();
Java에서는 int 상수 사용을 대체하기 위해 enum을 도입했습니다.
가정해 보겠습니다. 우리가 int 상수 집합을 사용했습니다.
class Size { public final static int SMALL = 1; public final static int MEDIUM = 2; public final static int LARGE = 3; public final static int EXTRALARGE = 4; {}
여기서, 우리가 상수를 출력하면 문제가 발생합니다. 이는 단순히 숫자만 출력되기 때문에 도움이 되지 않을 수 있습니다.
따라서, 우리는 간단하게 열거형을 사용하여 int 상수를 대체할 수 있습니다. 예를 들어,
enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE {}
이것은 우리의 코드를 더 직관적이게 만듭니다.
또한, 열거형은 컴파일 시간 타입 보안을 제공합니다.
만약 우리가 Size 타입의 변수를 선언하면(위의 예제와 같이), 그 변수가 네 가지 중 하나의 값을 포함할 수 있음을 보장할 수 있습니다. 네 가지 값 이외의 값을 전달하려고 시도하면 컴파일러는 오류를 표시합니다.