enum의 전체 이름은 enumeration입니다. JDK 5에 도입된 새로운 기능으로 java.lang 패키지에 저장됩니다. 이 글에서는 Java 열거형에 관련된 지식을 소개하겠습니다. 필요하신 분들은 참고하시면 됩니다.
enum의 정식 명칭은 Enumeration입니다. JDK 5에 도입된 새로운 기능으로 Java에 저장됩니다. .lang 패키지.
원래 인터페이스 정의 상수
public interface IConstants { String MON = "Mon"; String TUE = "Tue"; String WED = "Wed"; String THU = "Thu"; String FRI = "Fri"; String SAT = "Sat"; String SUN = "Sun"; }
구문(정의)
enum 키워드를 사용하여 열거형을 만듭니다. 생성된 유형이 java.lang.Enum 클래스(java.lang.Enum은 추상 클래스임)의 하위 클래스임을 암시합니다. 열거 유형은 Class Enum
package com.bjpowernode.test; /** * 枚举测试类 */ public enum EnumTest { MON, TUE, WED, THU, FRI, SAT, SUN; }
이 코드는 실제로 Enum(String name, int ordinal)을 7번 호출합니다.
new Enum<EnumTest>("MON",0); new Enum<EnumTest>("TUE",1); new Enum<EnumTest>("WED",2); ... ...
순회 및 전환과 같은 일반적인 작업
예제 코드 순회 및 전환 열거형:
public class Test { public static void main(String[] args) { for (EnumTest e : EnumTest.values()) { System.out.println(e.toString()); } System.out.println("----------------我是分隔线------------------"); EnumTest test = EnumTest.TUE; switch (test) { case MON: System.out.println("今天是星期一"); break; case TUE: System.out.println("今天是星期二"); break; // ... ... default: System.out.println(test); break; } } }
출력 결과:
MON
TUE
WED
THU
FRI
SAT
SUN
---나는 구분선이다------
오늘은 화요일
열거형 개체의 일반적인 메서드 소개
int compareTo(E o)
이 열거형의 순서를 지정된 개체와 비교합니다.
Class<E> getDeclaringClass()
이 열거형 상수의 열거형에 해당하는 클래스 객체를 반환합니다.
String name()
열거형 선언에 선언된 대로 이 열거형 상수의 이름을 반환합니다.
int ordinal()
열거형 상수의 서수(초기 상수 서수가 0인 열거형 선언에서의 해당 위치)를 반환합니다.
String toString()
선언에 포함된 열거형 상수의 이름을 반환합니다.
static 00d368726a2a56641bd42374047e1f94> T valueOf(Class 지정된 이름을 가진 열거형입니다. 출력 결과: 월 이후 TUE enum 사용자 지정 속성 및 메서드 제공 enum 개체 추가 값 속성과 getValue() 메소드를 살펴보십시오. 출력 결과: 원리 분석 enum의 구문 구조는 다음과 같습니다. 클래스와 동일 구문은 다르지만 컴파일러에서 컴파일한 후 생성되는 것이 클래스 파일입니다. 클래스 파일을 디컴파일하면 실제로 java.lang.Enum1a4db2c2c2313771e5742b6debf617a1을 상속받은 클래스가 생성되는 것을 확인할 수 있습니다. EnumTest를 디컴파일한 후(javap com.hmw.test.EnumTest 명령) 얻은 내용은 다음과 같습니다. 그래서 사실 enum은 클래스이지만 Java 컴파일러는 구문 분석과 방금 컴파일했습니다. 요약 enum은 모두 일부 속성과 메서드를 정의할 수 있습니다. 차이점은 enum이 상속 키워드를 사용할 수 없다는 것입니다. 다른 클래스. enum이 java.lang.Enum을 상속했기 때문입니다(java는 단일 상속입니다). public class Test {
public static void main(String[] args) {
EnumTest test = EnumTest.TUE;
//compareTo(E o)
switch (test.compareTo(EnumTest.MON)) {
case -1:
System.out.println("TUE 在 MON 之前");
break;
case 1:
System.out.println("TUE 在 MON 之后");
break;
default:
System.out.println("TUE 与 MON 在同一位置");
break;
}
//getDeclaringClass()
System.out.println("getDeclaringClass(): " + test.getDeclaringClass().getName());
//name() 和 toString()
System.out.println("name(): " + test.name());
System.out.println("toString(): " + test.toString());
//ordinal(), 返回值是从 0 开始
System.out.println("ordinal(): " + test.ordinal());
}
}
getDeclaringClass(): com.hmw.test.EnumTest
name(): TUE
toString(): TUE
ordinal(): 1
package com.bjpowernode.test;
/**
* 枚举测试类
*
*/
public enum EnumTest {
MON(1), TUE(2), WED(3), THU(4), FRI(5), SAT(6) {
@Override
public boolean isRest() {
return true;
}
},
SUN(0) {
@Override
public boolean isRest() {
return true;
}
};
private int value;
private EnumTest(int value) {
this.value = value;
}
public int getValue() {
return value;
}
public boolean isRest() {
return false;
}
}
public class Test {
public static void main(String[] args) {
System.out.println("EnumTest.FRI 的 value = " + EnumTest.FRI.getValue());
}
}
EnumTest.FRI 的 value = 5
EnumSet,EnumMap 的应用
public class Test {
public static void main(String[] args) {
// EnumSet的使用
EnumSet<EnumTest> weekSet = EnumSet.allOf(EnumTest.class);
for (EnumTest day : weekSet) {
System.out.println(day);
}
// EnumMap的使用
EnumMap<EnumTest, String> weekMap = new EnumMap(EnumTest.class);
weekMap.put(EnumTest.MON, "星期一");
weekMap.put(EnumTest.TUE, "星期二");
// ... ...
for (Iterator<Entry<EnumTest, String>> iter = weekMap.entrySet().iterator(); iter.hasNext();) {
Entry<EnumTest, String> entry = iter.next();
System.out.println(entry.getKey().name() + ":" + entry.getValue());
}
}
}
public class com.hmw.test.EnumTest extends java.lang.Enum{
public static final com.hmw.test.EnumTest MON;
public static final com.hmw.test.EnumTest TUE;
public static final com.hmw.test.EnumTest WED;
public static final com.hmw.test.EnumTest THU;
public static final com.hmw.test.EnumTest FRI;
public static final com.hmw.test.EnumTest SAT;
public static final com.hmw.test.EnumTest SUN;
static {};
public int getValue();
public boolean isRest();
public static com.hmw.test.EnumTest[] values();
public static com.hmw.test.EnumTest valueOf(java.lang.String);
com.hmw.test.EnumTest(java.lang.String, int, int, com.hmw.test.EnumTest);
}
위 내용은 Java 열거_Power 노드 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!