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

자바 열거 열거

伊谢尔伦
풀어 주다: 2016-11-25 10:37:35
원래의
1685명이 탐색했습니다.

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


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿