>Java >java지도 시간 >자바 열거 열거

자바 열거 열거

伊谢尔伦
伊谢尔伦원래의
2016-11-25 10:37:351676검색

대부분의 프로그래밍 언어에서 열거형은 일반적으로 사용되는 필수 데이터 유형이며 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 유형의 클래스 정적 상수입니다.


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.