자바 매 거 해석

7604 단어 자바
오늘 은 매 거 진 유형의 사용 을 정리 하고 먼저 수 요 를 살 펴 보 겠 습 니 다. 지금 은 신호등 의 기능 을 모 의 하고 싶 습 니 다. 이 기능 을 실현 하기 전에 저 는 신호등 의 빨간색 과 노란색 과 녹색 세 가지 수 치 를 어떤 방식 으로 표시 하 는 지 해결 해 야 합 니 다. 저 는 먼저 간단 한 방법 으로 실현 하 겠 습 니 다.
public class Demo1 {
    public static void main(String[] args) {
        int color;
        color = Color.GREEN;
    }
}

class Color{
    public static final int RED = 1;
    public static final int GREEN = 2;
    public static final int YELLOW = 3;
}

이 방법 에서 저 는 한 가지 유형 을 정 의 했 습 니 다. 그 중에서 세 개의 성형 상수 가 정의 되 었 습 니 다. 사용 할 때 세 개의 변수 만 정의 하면 됩 니 다. 그런데 여기 문제 가 있 습 니 다. 성형 으로 신호등 을 표시 하기 때문에 color 에 다른 성형 으로 값 을 부여 하면 프로그램 이 잘못 되 지 않 지만 그 기능 은 실현 되 지 않 습 니 다.우리 가 원 하 는 것 은 color 로 하여 금 빨간색 과 노란색 의 한 가지 값 을 취하 게 하 는 것 이다. 다른 값 이 될 수 없다. 우 리 는 두 번 째 방법 을 다시 보 자.
public class Demo2 {
    public static void main(String[] args) {
        Color color = Color.GREEN;
    }
}

 class Color{
     public static final Color RED = new Color();
     public static final Color GREEN = new Color();
     public static final Color YELLOW = new Color();
 }

여기 서도 하나의 클래스 를 정 의 했 습 니 다. 클래스 안의 매개 변 수 는 이러한 인 스 턴 스 대상 이 되 었 습 니 다. 신호등 색상 을 정의 할 때 이러한 인 스 턴 스 대상 color 를 정의 한 다음 에 이 대상 에 게 값 을 부여 할 수 있 습 니 다. 부 여 된 값 도 Color 의 대상 입 니 다. 그러면 color 의 값 은 Color 의 대상 일 수 밖 에 없습니다. 이렇게 쓰 는 것 이 첫 번 째 방법 보다 좋 습 니 다.그러나 이렇게 또 하나의 문 제 는 바로 제 가 new 대상 에 게 color 를 부여 할 수 있다 는 것 입 니 다. 그러면 그의 수치 범 위 는 빨간색 과 노란색, 녹색 세 가지 중 하나 라 는 것 을 보장 할 수 없습니다. 어떻게 해결 합 니까?여 기 는 Color 류 에서 무 참 구조 방법 을 사유 화하 기만 하면 됩 니 다. 코드 는 다음 과 같 습 니 다.
 class Color{
     private Color2(){}
     public static final Color RED = new Color();
     public static final Color GREEN = new Color();
     public static final Color YELLOW = new Color();
 }

이렇게 쓰 면 자신의 new 대상 이 될 수 없습니다. 신호등 의 값 의 정확성 을 확보 할 수 있 습 니 다. 그러나 이렇게 쓰 는 것 은 좀 번 거 롭 습 니 다. 변수 가 많 으 면 상수 대상 을 많이 정의 해 야 합 니 다. 어떤 간단 한 방법 이 있 습 니까?jdk 5.0 은 매 거 진 형식 을 제공 합 니 다. 위의 두 번 째 쓰기 방법 을 간소화 하고 Color 에 대해 서 는 이렇게 쓸 수 있 습 니 다.
enum Color{
    RED,GREEN,YELLOW;
}

필요 한 상수 라 고 직접 적 으 세 요. 이 세 가지 상수 가 바로 Color 의 실례 화 대상 입 니 다. 그의 본질 과 방법 은 똑 같 습 니 다. 안에 있 는 무 참 구조 함수 도 사유 화 되 었 습 니 다. 그러나 우 리 는 그것 을 다시 쓴 다음 에 그 에 게 파 라 메 터 를 전달 할 수 있 습 니 다. 그러면 이 세 가지 상수 가 도대체 어떤 유형 인지 검증 할 수 있 습 니 다.
enum Color{
    RED("red"),GREEN("green"),YELLOW("yellow");
    private Color4(String name){}
}

위의 코드 는 Color 에 매개 변수 가 있 는 구조 함 수 를 추 가 했 습 니 다. 이 럴 때 세 개의 상수 를 직접 쓸 수 없습니다. 반드시 뒤에 전달 하 는 매개 변 수 를 써 야 틀 리 지 않 습 니 다. 이것 은 세 개의 상수 가 사실은 Color 의 인 스 턴 스 대상 임 을 설명 합 니 다.만약 에 이 매 거 진 유형 에 추상 적 인 방법 을 더 하면 세 가지 상수 도 반드시 이 추상 적 인 방법 을 실현 해 야 한다.
enum Color{
    RED("red"){
        public void p(){
            System.out.println("red");
        }
    },GREEN("green"){
        public void p(){
            System.out.println("green");
        }
    },YELLOW("yellow"){
        public void p(){
            System.out.println("yellow");
        }
    };
    private Color(String name){}
    public abstract void p();
}

추상 적 인 방법 을 실현 하 는 방식 은 상기 코드 가 쓴 것 과 같이 매 거 진 유형의 실질 은 바로 내 가 두 번 째 방법 에서 쓴 코드 이 고 상수 실질 은 바로 이런 사례 화 대상 임 을 설명 한다.다음은 매 거 진 다른 간단 한 조작 을 살 펴 보 겠 습 니 다.
public class Dome4 {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Color5 color = Color.RED;
        //  color     
        String name = color.name();
        System.out.println(name);
        //       
        int index = color.ordinal();
        System.out.println(index);
        //       
        Color5 c = color.valueOf("GREEN");
        System.out.println(c.ordinal());
    }
}

enum Color{
    RED,GREEN,YELLOW;
}

위의 코드 는 상수 의 이름 을 가 져 오 는 방법 과 매 거 진 형식의 상수 와 상수 의 위 치 를 가 져 오 는 방법 을 보 여 줍 니 다.이상 은 매 거 진 것 에 대한 간단 한 총 결 이다.

좋은 웹페이지 즐겨찾기