자바 의 매 거 진 종 류 를 간략하게 소개 합 니 다.

5864 단어 자바매 거 류
1.개념 은 특정한 상황 에서 하나의 대상 은 유한 하고 고정 적 인 것 이다.예 를 들 어 계절 류 는 네 개의 대상 만 있 는데 이런 사례 는 유한 하고 고정 적 인 유형 으로 자바 에서 매 거 진 유형 이 라 고 불 린 다.수 동 으로 매 거 진 클래스 구현:1.private 를 통 해 구조 기 를 숨 깁 니 다.2.이 종류의 모든 가능 한 인 스 턴 스 를 Public static final 속성 으로 저장 합 니 다.3.필요 하 다 면 정적 인 방법 을 제공 하여 특정한 매개 변 수 를 통 해 일치 하 는 인 스 턴 스 를 얻 을 수 있 습 니 다.
아래 의 예 시 를 보십시오.
package com.home;

public class Season {
	private final String name;
	public static final Season SPRING = new Season("  ");
	public static final Season SUMMER = new Season("  ");
	public static final Season FALL = new Season("  ");
	public static final Season WINTER = new Season("  ");

	//        private
	public Season(String name) {
		super();
		this.name = name;
	}

	//    getter  
	public String getName() {
		return name;
	}

	/**
	 *             
	 * 
	 * @param seasonNum
	 * @return
	 */
	public static Season getSeason(int seasonNum) {
		switch (seasonNum) {
		case 1:
			return SPRING;
		case 2:
			return SUMMER;
		case 3:
			return FALL;
		case 4:
			return WINTER;
		default:
			return null;
		}
	}
}

2.차이 점 은 위의 예제 에서 알 수 있 듯 이 수 동 으로 매 거 진 류 를 정의 하 는 것 이 비교적 번 거 로 운 것 입 니 다.우 리 는 키워드 enum 을 사용 하여 매 거 진 류 를 정의 할 수 있 습 니 다.매 거 진 류 와 일반 류 의 차 이 를 정의 할 수 있 습 니 다.1.enum 으로 정의 한 매 거 진 류 는 기본적으로 자바.lang.Enum 류 를 계승 하 는 것 이지 Object 류 를 계승 하 는 것 이 아 닙 니 다.java.lang.Enum 류 는 java.lang.Seriablee 와 java.lang.Comparable 두 개의 인 터 페 이 스 를 실현 했다.2.매 거 진 구조 기 는 private 수식 만 사용 할 수 있 고 생략 하 더 라 도 기본 값 은 private 입 니 다.3.매 거 진 인 스 턴 스 는 표시 만 할 수 있 습 니 다.그렇지 않 으 면 인 스 턴 스 가 생 길 수 없습니다.이 인 스 턴 스 를 표시 할 때 시스템 은 자동 으로 Public static final 수식 을 추가 합 니 다.프로그래머 가 추가 하지 않 아 도 됩 니 다.4.모든 매 거 진 클래스 는 하나의 values 방법 을 제공 하여 모든 매 거 진 값 을 편리 하 게 옮 겨 다 닐 수 있 습 니 다.enum 키 워드 를 사용 하여 정의 하 는 매 거 진 예제:
package com.home;

public enum Gender {
	//                    
	MALE(" "), FEMALE(" ");
	private final String name;

	//            private  
	private Gender(String name) {
		this.name = name;
	}

	//    getter  
	public String getName() {
		return name;
	}

	/**
	 *                    
	 * 
	 * @param gender
	 * @return
	 */
	public static String getGenderDisc(Gender gender) {
		//   switch          
		switch (gender) {
		case MALE:
			return "I am a man";
		case FEMALE:
			return "I am a woman";
		default:
			return null;
		}
	}

}

3.매 거 류 의 상용 방법 에 대한 소 개 는 다음 테스트 류 를 보십시오.
package com.home;

public class TestGender {

	public static void main(String[] args) {
		// Gender.values()       
		for (Gender g : Gender.values()) {
			System.out.println(g);
		}
		//           EnumClass.variable  
		Gender gender = Gender.MALE;
		System.out.println(Gender.getGenderDisc(gender));
		//      Enum valueOf       
		System.out.println(Enum.valueOf(Gender.class, "MALE"));
		//          ,                 ,      -1;  ,      1;    0
		System.out.println(Gender.FEMALE.compareTo(Gender.MALE));
		// name     toString    ,         ,     toString  
		System.out.println(Gender.MALE.name());
		// ordinal()         ,    0,  0  
		System.out.println(Gender.MALE.ordinal());
	}

}

4.인 터 페 이 스 를 실현 하 는 매 거 진 유형
사실 매 거 진 클래스 구현 인터페이스 와 일반 클래스 는 별 차이 가 없 으 며,implements 키 워드 를 사용 하여 하나 이상 의 인 터 페 이 스 를 실현 할 수 있 습 니 다.그러나 주의해 야 할 것 은 일반 류 처럼 인 터 페 이 스 를 실현 한 후에 인터페이스 안의 방법 을 직접 다시 쓰 면 매 거 진 유형의 모든 인 스 턴 스 가 똑 같은 인 터 페 이 스 를 가지 고 이 루어 지기 때문에 의미 와 유연성 을 잃 기 때문에 모든 인 스 턴 스 에 서로 다른 방법 으로 이 루어 진다.예 를 들 어 다음 과 같다.
package com.home;

public enum Gender implements GenderDesc {
	MALE(" ") {
		//                
		public void info() {
			System.out.println("I am a man");
		}
	},
	FEMALE(" ") {
		public void info() {
			System.out.println("I am a woman");
		}
	};
	private final String name;

	//            private  
	private Gender(String name) {
		this.name = name;
	}

	//    getter  
	public String getName() {
		return name;
	}
}

인터페이스:
package com.home;

public interface GenderDesc {
	public void info();
}

5.추상 적 인 방법 을 포함 하 는 매 거 진 유형,매 거 진 유형 에서 일반 방법 에 대한 사용 은 일반 유형 과 마찬가지 로 여기 서 추상 적 인 방법의 사용 만 소개 한다.사실은 추상 적 인 방법 과 실현 인 터 페 이 스 는 하나의 이치 이다.여기 서 더 말 하지 않 고 예 를 들 어 볼 수 있다.
package com.home;

public enum Gender {
	MALE(" ") {
		//                
		public String getInfo() {
			return "I am a man";
		}
	},
	FEMALE(" ") {
		public String getInfo() {
			return "I am a woman";
		}
	};
	private final String name;

	//            private  
	private Gender(String name) {
		this.name = name;
	}

	//    getter  
	public String getName() {
		return name;
	}

	//             ,                  
	public abstract String getInfo();
}

주의:위의 매 거 진 클래스 에서 추상 적 인 방법 을 정 의 했 지만 클래스 는 abstract 로 수식 하지 않 았 습 니 다.이 점 은 일반 클래스 와 다 릅 니 다.매 거 진 클래스 는 매 거 진 값 을 만 들 고 추상 적 인 방법 에 실현 을 제공 해 야 하기 때 문 입 니 다.그렇지 않 으 면 컴 파일 오류 가 발생 할 수 있 습 니 다.
 

좋은 웹페이지 즐겨찾기