Java 에서 매 거 진 타 입 Enum 의 용법 소개

6562 단어 Java
오늘 공부 하 는 과정 에서 매 거 진 이 지식 점 을 만 났 다.그동안 이'이름'을 알 고 있 었 지만 그 의미 와 관련 용법 에 대해 서 는 잘 몰 랐 다.그래서 대충 공부 하기 로 했 어 요.검색 해 보 니 이 방면 의 자료 가 적지 않다.그 중에서 주로 참고 하 는 박문 은 두 편 이 있 는데 링크 를 첨부 한다.링크 1 링크 2
매 거 유형 소개
  • 정의:매 거 유형(enum type)은 고정된 상수 로 합 법 적 인 유형 을 말한다.자바 에 서 는 키워드 enum 으로 매 거 진 형식 을 정의 합 니 다.예 는 다음 과 같다.
    public enum Color{
        RED,GREEN,BLUE,YELLOW
    }
  • 2.매 거 진 유형 은 유사 한 값 을 한 유형 에 포함 시 키 는 데 사 용 됩 니 다.이러한 매 거 진 형식의 이름 은 유일한 형식 설명자 로 정 해 지 는데 이 점 에서 상수 의 정의 와 비슷 하 다.그러나 상수 유형 에 비해 매 거 진 유형 은 설명 한 변수 에 더 큰 수치 범 위 를 제공 할 수 있 습 니 다.예 를 들 어 우리 가 평소에 switch 를 사용 할 때 switch 의 값 은 int,byte,short,char 와 같은 간단 한 유형 일 수 밖 에 없다.매 거 유형 이 생기 면 대상 을 직접 사용 할 수 있다.코드 예 는 다음 과 같다.
  •  //                     
     public enum WeekDayEnum { Mon, Tue, Wed, Thu, Fri, Sat, Sun } 
    
     //        
     WeekDayEnum today = readToday(); 
    
     //            
     switch(today) { 
      Mon: do something; break; 
      Tue: do something; break; 
      Wed: do something; break; 
      Thu: do something; break; 
      Fri: do something; break; 
      Sat: play sports game; break; 
      Sun: have a rest; break; 
     }

    이러한 매 거 진 날짜 에 대해 JVM 은 실행 기간 에 간단 한 대상 인 스 턴 스 를 만들어 일일이 대응 합 니 다.이 대상 들 은 모두 유일한 idenity 를 가지 고 있 으 며,성형 수치 와 마찬가지 로 switch 문 구 는 이에 따라 점프 를 수행 합 니 다.
    왜 Enum 타 입 을 도입 하 셨 어 요?
    자바 언어 가 매 거 진 형식 을 도입 하지 않 기 전에 매 거 진 형식 을 나타 내 는 일반적인 모델 은 int 상수 가 있 음 을 나타 내 는 것 입 니 다.일반적으로 public final static 방법 으로 관련 코드 를 정의 한다.예 는 다음 과 같 습 니 다."`java Public static class Rainbow Color{
        //                 
        public static final int RED = 0; 
        public static final int ORANGE = 1; 
        public static final int YELLOW = 2; 
        public static final int GREEN = 3; 
        public static final int CYAN = 4; 
        public static final int BLUE = 5; 
        public static final int PURPLE = 6; 
     }
    ```
    

    사용 할 때,우 리 는 프로그램 에서 이 상수 들 을 직접 인용 할 수 있다.그런데 이런 패턴 에 무슨 문제 가 있 을까요?다 들 그렇게 오래 걸 렸 는데 왜 매 거 진 유형(enum type)(자바 1.5 부터 매 거 진 유형 도입)을 도입 해 야 합 니까?다음 과 같은 몇 가지 측면 에서 말하자면-안전성(유형 이 안전 하지 않 음)은 색상 상수 의 대응 값 이 정수 형 이기 때문에 프로그램 실행 과정 에서 색상 변수 에 임의의 정수 치 를 입력 하여 오류 가 발생 할 수 있 습 니 다.
  • 일치 성 차 이 는 성형 매 거 진 이 컴 파일 기간 상수 에 속 하기 때문에 컴 파일 과정 이 완료 되면 모든 클 라 이언 트 와 서버 측 이 인용 한 곳 에 전체 수 치 를 직접 기록 합 니 다.이렇게 하면 오래된 매 거 진 수 치 를 수정 하거나 새로운 매 거 진 수 치 를 추가 한 후에 모든 인용 지방 코드 를 다시 컴 파일 해 야 합 니 다.그렇지 않 으 면 실행 시간 에 오류 가 발생 할 수 있 습 니 다.
  • 가 독성 차 이 는 매 거 진 대부분의 상황 을 사용 합 니 다.저 는 매 거 진 형식의 문자열 표현 식 을 쉽게 얻 을 수 있어 야 합 니 다.만약 int 매 거 상수 로 인쇄 한다 면,우리 가 본 것 은 하나의 숫자 입 니 다.이것 은 그다지 쓸모 가 없습니다.int 상수 대신 String 상수 사용 을 생각 할 수 있 습 니 다.이 상수 에 인쇄 가능 한 문자열 을 제공 하지만 성능 문 제 를 일 으 킬 수 있 습 니 다.문자열 의 비교 작업 에 의존 하기 때문에 이 모델 도 우리 가 원 하지 않 는 것 입 니 다.따라서 유형 안전성 과 프로그램 가 독성 두 가지 측면 에서 볼 때 int 와 String 매 거 진 모델 의 단점 이 드 러 났 다.용법 대 총 결*그럼 언제 매 거 진 을 사용 해 야 합 니까?일주일 의 일수,일년 사계절 등 고정된 상수 가 필요 할 때마다.아니면 우리 가 번역 하기 전에 그 안에 포 함 된 모든 것 이 집합 할 만 한 가치 가 있다 는 것 을 알 았 다.자바 1.5 의 매 거 진 유형 은 절대 다수의 프로그래머 들 의 요 구 를 만족 시 킬 수 있 으 며,간단명료 하고 사용 하기 쉬 운 특징 이 매우 뚜렷 하 다.
  • 용법 1:상수 java
    public enum Color {
    RED, GREEN, BLANK, YELLOW
    }
  • 용법 2:switch
     ```java
    enum Signal {  
    GREEN, YELLOW, RED  
    
    }public class TrafficLight{Signal color=Signal.RED;public void change() { switch (color) { case RED: color = Signal.GREEN; break; case YELLOW: color = Signal.RED; break; case GREEN: color = Signal.YELLOW; break; } } } “`
  • 용법 3:매 거 진 에 새로운 방법 을 추가 합 니 다
    ```java
    public enum Color {  
        RED("  ", 1), GREEN("  ", 2), BLANK("  ", 3), YELLO("  ", 4);  
        //       
        private String name;  
        private int index;  
        //       
        private Color(String name, int index) {  
            this.name = name;  
            this.index = index;  
        }  
        //       
        public static String getName(int index) {  
            for (Color c : Color.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;  
        }  
    }  
    ```  
    
  • 용법 4:매 거 진 방법 java
    public enum Color {
    RED(" ", 1), GREEN(" ", 2), BLANK(" ", 3), YELLO(" ", 4);
    //
    private String name;
    private int index;
    //
    private Color(String name, int index) {
    this.name = name;
    this.index = index;
    }
    //
    @Override
    public String toString() {
    return this.index+"_"+this.name;
    }
    }
  • 용법 5:인터페이스 java
    public interface Behaviour {
    void print();
    String getInfo();
    }
    public enum Color implements Behaviour{
    RED(" ", 1), GREEN(" ", 2), BLANK(" ", 3), YELLO(" ", 4);
    //
    private String name;
    private int index;
    //
    private Color(String name, int index) {
    this.name = name;
    this.index = index;
    }
    //
    @Override
    public String getInfo() {
    return this.name;
    }
    //
    @Override
    public void print() {
    System.out.println(this.index+":"+this.name);
    }
    }
  • 실현
  • 용법 6:인터페이스 조직 을 사용 하여
        public interface Food {  
        enum Coffee implements Food{  
            BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO  
        }  
        enum Dessert implements Food{  
            FRUIT, CAKE, GELATO  
        }  
    }
  • 전문 이 끝 났 으 니 모두 에 게 도움 이 되 기 를 바 랍 니 다.

    좋은 웹페이지 즐겨찾기