대부분의 프로그래밍 언어에서 열거형은 일반적으로 사용되는 필수 데이터 유형이며 Java도 예외는 아닙니다. 그러나 Java의 Enum 열거형에는 예상치 못한 용도가 많이 있습니다. 아래에서 살펴보겠습니다.
1. enum에 변수와 메소드를 추가할 수 있습니다.
먼저 코드 예제를 살펴보겠습니다.
public enum State { Normal("正常态", 1), Update("已更新", 2), Deleted("已删除", 3), Fired("已屏蔽", 4); // 成员变量 private String name; private int index; // 构造方法,注意:构造方法不能为public,因为enum并不可以被实例化 private State(String name, int index) { this.name = name; this.index = index; } // 普通方法 public static String getName(int index) { for (State c : State .values()) { if (c.getIndex() == index) { return c.name; } } return null; } // get set 方法 public String getName() { return name; } public void setName(String name) { this.name = name; } public int getIndex() { return index; } public void setIndex(int index) { this.index = index; } }
위 코드에서 정의가 다음과 같은 것을 알 수 있습니다. 열거형 값을 완성한 다음 그 뒤에 세미콜론을 추가하면 다른 변수와 메서드를 정의할 수 있습니다. 또한, enum의 생성자는 public으로 표시될 수 없습니다. 이는 사용자가 enum을 인스턴스화하는 것을 방지하기 위한 것입니다.
2. 상수를 정의하는 데 사용할 수 있습니다.
먼저 Java에서 상수를 정의하는 방법을 검토해 보겠습니다.
public static final int normalState = 1; private static final int updateState = 2;
다음으로 할 수 있습니다. 또한 enum Enumeration을 사용하여 위의 상수 정의를 대체합니다. 코드는 다음과 같습니다.
public enum State { Normal, Update, Deleted, Fired }
Java에서 enum을 사용하여 상수를 정의하는 데에는 구문 이점이 없지만 enum 열거 유형은 더 많은 작업 기능을 제공할 수 있습니다. .
3. enum에 인터페이스 구현
먼저 다음 코드를 살펴보겠습니다.
public interface ICanReadState { void read(); String getState(); } public enum State implements ICanReadState { Normal("正常态", 1), Update("已更新", 2), Deleted("已删除", 3), Fired("已屏蔽", 4); private String name; private int index; private State(String name, int index) { this.name = name; this.index = index; } // 接口方法1 @Override public String getState() { return this.name; } // 接口方法2 @Override public void read() { System.out.println(this.index + ":" + this.name); } }
일반 클래스에서 인터페이스를 사용하는 것처럼 다음을 사용할 수도 있습니다. 인터페이스를 상속하고 인터페이스의 모든 메서드를 구현하면 열거형의 값을 더 쉽게 정렬하고 비교할 수 있다는 장점이 있으며 더 나은 캡슐화가 가능합니다.
요약
간단히 말해서 열거형은 상속할 수 없는 최종 클래스입니다. 위의 열거형을 예로 들면 열거형입니다. , 실제로는 State 유형의 클래스 정적 상수입니다.