열거 유형을 정의 할 때는 본질적으로 클래스를 정의하지만 많은 세부 사항이 컴파일러에 의해 채워져 있으므로 어느 정도까지 열거 키워드의 역할은 클래스 또는 인터페이스와 같습니다.
"enum"을 사용하여 열거 형식을 정의 할 때, 당신이 정의하는 유형은 본질적으로 java.lang.enum 클래스에서 상속되며, 각 Enum의 멤버는 실제로 당신이 정의하는 열거 유형의 인스턴스입니다. 그것들은 모두 기본적으로 기본적으로 기본적으로 변경 될 수없고, 당신은 그것들을 변경할 수없고, 정적 멤버이기도하므로 유형 이름을 통해 직접 사용할 수 있으며, 물론 가장 중요한 것은 모두 공개됩니다.
예를 들어:
opconstants.javapublic enum opconstants {turn_left, turn_right, shoot} 이 예에서 OpConstants는 java.lang.enum에서 상속됩니다. Turn_Left, Turn_Right, Shoot와 같은 각 열거 멤버. 그것들은 모두 opconstants의 객체 인스턴스, 즉 객체 인스턴스입니다. 위에는 자연스럽게 몇 가지 방법이 있습니다. 예를 들어, toString () 메소드가 덮어 쓰여있어 열거 값의 문자열 설명을 직접 얻을 수 있습니다. 열거 객체로 정의 된 값 () 메소드를 사용하면 모든 열거 인스턴스를 얻고 배열로 다시 전달할 수 있습니다. 이 두 가지 방법을 사용하여 OpConstants의 내용을 간단히 표시합니다.
showenum.javapublic class showenum {public static void main (String [] args) {for (opconstants constant : opconstants.values ()) {system.out.println (constant.toString ()); }}} 기본적으로 println ()은 자동으로 toString ()을 호출하므로 실제로 toString ()을 작성하지 않아도됩니다. 실행 결과는 다음과 같습니다.
Turn_LeftTurn_rightshoot
"=="또는 equals () 메소드를 사용하여 열거 객체를 비교할 수 있습니다. ""== ""는 당신이 제공하는 열거 객체가 동일한지 (즉, 동일한 메모리 위치를 차지하고 있음) 비교할 수 있으며, equals ()는 본질적으로 두 개의 열거 객체의 내용을 비교합니다. 기본적으로 열거의 문자열 값에 따라 비교됩니다.
valueOf () 메소드를 사용하면 지정된 문자열을 열거 인스턴스로 변환 할 수 있습니다. Enumeration시 두 개의 열거 객체의 순서를 비교할 수있는 compareto () 메소드를 사용할 수 있습니다. 여기 예입니다
showenum.javapublic class showenum {public static void main (String [] args) {enumcompareto (opconstants.valueof (args [0])); } public static void enumcompareto (opconstants constant) {system.out.println (constant); for (opconstants c : opconstants.values ()) {system.out.println (constant.compareto (c)); }}} 실행 결과 :
$ java showenum turn_right
Turn_Right10-1
순서가 긍정적 값을 전달하는데, 이는 순서가 열거 값이 비교되기 전이며, 음의 값이 표시된 후, 0은 상호 비교 열거 값의 위치가 동일하다는 것을 의미합니다.
각 열거 멤버에 대해 Ordinal () 메소드를 사용하여 열거 순서에서 위치 색인을 얻을 수 있으며 기본값은 0으로 시작할 수 있습니다.
showenum.javapublic class showenum {public static void main (String [] args) {for (opconstants c : opconstants.values ()) {system.out.printf ( "%d%s%n", c.ordinal (), c); }}} 실행 결과 :
0 Turn_Left1 Turn_Right2 촬영
열거 키워드는 열거 클래스를 정의하는 데 사용될 수 있으며 관련 상수는 클래스에 작성 될 수 있습니다. 아래 예를 살펴 보겠습니다.
다음 코드 :
클래스 testclass {private testclass () {} // 개인 생성자를 정의하고 외부에서 개체를 인스턴스화 할 수 없습니다. // 두 인스턴스를 제공합니다. 공개 정적 최종 테스트 클래스 B = New TestClass ();}대신 에거 유형을 사용할 수 있습니다.
enum testclass01 {a, b;}용법:
열거는 또한 생성자, 필드 및 방법을 가질 수 있습니다.
enum testclass02 {a ( "a") // 객체를 생성 할 때 생성자 매개 변수를 전달할 때 b ( "b"); 개인 문자열 값; 개인 testclass02 (문자열 값) {this.value = value; } public String getValue () {return this.value; }}열거는 또한 추상적 인 방법을 가질 수 있습니다.
enum testclass03 {a () {// 초록 메소드 구현 public void type () {System.out.println ( "우수"); }}, b () {public void type () {system.out.println ( "good"); }}; 공개 초록 void type (); // 초록 방법 정의}테스트 방법 :
public class test02 {public static void main (String [] args) {print (testclass02.a); // Enum 매개 변수에서 일시 중지} public static void print (testclass02 t) {System.out.println (t.getValue ()); } enum testClass02 {a ( "a"), b ( "b"); 개인 문자열 값; 개인 testclass02 (문자열 값) {this.value = value; } public String getValue () {return this.value; }}}실행 결과 :
AAUTHOR : 시작 부호 : 아직 시도하는 한 실패가 아닙니다.