이 글은 Java에서 enum의 상세한 사용법에 대한 관련 정보를 주로 소개합니다. Java에서 enum의 사용법을 이해하고 익히는 데 도움이 되기를 바랍니다. 도움이 필요한 친구들은
Java에서 enum을 사용하는 방법을 참고하세요.
enum은 열거형을 의미하며 JDK 1.5에 도입된 새로운 기능이며 java.lang 패키지에 저장됩니다.
다음은 enum 사용 경험과 요약 중 일부입니다.
원래 인터페이스 정의 상수
public interface IConstants { String MON = "Mon"; String TUE = "Tue"; String WED = "Wed"; String THU = "Thu"; String FRI = "Fri"; String SAT = "Sat"; String SUN = "Sun"; }
Syntax (Definition)
enum 키워드를 사용해야 하는데, 이는 생성된 유형이 모두 java.lang의 하위 항목임을 의미합니다. .Enum 클래스 클래스(java.lang.Enum은 추상 클래스입니다). 열거형 유형은 일반 패턴 Class Enum
package com.hmw.test; /** * 枚举测试类 * @author <a href="mailto:hemingwang0902@126.com" rel="external nofollow" rel="external nofollow" >何明旺</a> */ public enum EnumTest { MON, TUE, WED, THU, FRI, SAT, SUN; }
을 따릅니다. 이 코드는 실제로 Enum(문자열 이름, int 서수)을 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 ----------------我是分隔线------------------ 今天是星期二
enum 객체의 일반적인 메서드 소개
int CompareTo(E o)
이 열거형을 지정된 객체와 비교하세요. 주문하다.
Class getDeclaringClass()
이 열거형 상수의 열거형에 해당하는 클래스 객체를 반환합니다.
String name()
열거형 선언에 선언된 대로 이 열거형 상수의 이름을 반환합니다.
int ordinal()
열거형 상수의 서수(초기 상수 서수가 0인 열거형 선언에서의 해당 위치)를 반환합니다.
String toString()
선언에 포함된 열거형 상수의 이름을 반환합니다. ㅋㅋㅋ
출력 결과:
/** * Java学习交流QQ群:589809992 我们一起学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()); } }
EnumSet, EnumMap 애플리케이션
TUE 在 MON 之后 getDeclaringClass(): com.hmw.test.EnumTest name(): TUE toString(): TUE ordinal(): 1원리 분석 enum의 구문 구조는 클래스 구문과 다르지만 컴파일러에서 컴파일한 후 생성되는 것은 클래스 파일입니다. 클래스 파일을 디컴파일하면 실제로 java.lang.Enum을 상속받은 클래스가 생성되는 것을 확인할 수 있습니다. EnumTest를 디컴파일한 후(javap com.hmw.test.EnumTest 명령) 얻은 내용은 다음과 같습니다.
package com.hmw.test; /** * 枚举测试类 * * @author <a href="mailto:hemingwang0902@126.com" rel="external nofollow" rel="external nofollow" >何明旺</a> */ 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()); } }실제로 enum은 클래스이지만 Java 컴파일러는 구문 분석 및 컴파일을 도와줍니다. 그게 다야.
enum을 일반 클래스로 생각하면 모두 일부 속성과 메서드를 정의할 수 있습니다. 차이점은 enum이 java.lang을 상속했기 때문에 확장 키워드를 사용하여 다른 클래스를 상속할 수 없다는 것입니다. (자바는 단일 상속입니다.)
위 내용은 Java의 enum 사용 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!