Java 프로그래밍에서 열거 유형의 정의와 사용 분석

매거 형식을 정의할 때 본질적으로 하나의 종류를 정의하는 것입니다. 단지 많은 세부 사항을 컴파일러가 보충해 주었기 때문에 어느 정도에enum 키워드의 역할은class나interface와 같습니다.
"enum"을 사용하여 매거 형식을 정의할 때, 실질적으로 정의된 형식은java에서 계승됩니다.lang. Enum 클래스, 모든 매개 구성원은 사용자가 정의한 매개 형식의 실례 (Instance) 입니다. 이것들은final로 기본화되어 있기 때문에 변경할 수 없습니다. 이것들도static 구성원이기 때문에 형식 이름을 통해 직접 사용할 수 있습니다. 물론 가장 중요한 것은 공개 (public) 입니다.
예:

OpConstants.java
public enum OpConstants {TURN_LEFT, TURN_RIGHT, SHOOT} 
이 예에서 OpConstants는java로부터 상속됩니다.lang. Enum, TURN_ 과 같은 각 열거 멤버LEFT、TURN_RIGHT, SHOOT, OpConstants의 대상 실례입니다. 즉, 대상 실례입니다. 위에서 사용할 수 있는 방법이 있습니다. 예를 들어 toString () 방법이 덮어씌워져 있습니다. 열거 값의 문자열 설명을 직접 얻을 수 있고, 열거 대상이 정의한values () 방법은 모든 열거 실례를 얻을 수 있고 그룹 방식으로 되돌려받을 수 있습니다.이 두 가지 방법으로 OpConstants의 내용을 간단하게 표시합니다.

ShowEnum.java
public class ShowEnum {
  public static void main(String[] args) {
    for(OpConstants constant: OpConstants.values()) {
      System.out.println(constant.toString());
    }
  }
} 
기본적으로 println () 은 toString () 를 자동으로 호출하기 때문에 toString () 을 쓰지 않아도 됩니다. 실행 결과는 다음과 같습니다.

TURN_LEFT
TURN_RIGHT
SHOOT
"=="또는 equals () 방법을 사용하여 열거 객체를 비교할 수 있습니다. "=="는 사용자가 제공한 열거 대상이 같은 메모리 위치를 차지하는지 비교할 수 있고, equals () 는 두 개의 열거 대상의 내용을 실질적으로 비교할 수 있습니다. 기본적으로 열거 문자열 값에 따라 비교됩니다.
valueOf () 방법은 지정한 문자열을 열거 실례로 변환할 수 있으며,compareTo () 방법을 사용할 수 있습니다. 이것은 두 개의 열거 대상이 열거할 때의 순서를 비교할 수 있습니다. 다음은 예를 들겠습니다.

ShowEnum.java
public 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_RIGHT
1
0
-1

양수 값을 반환하면 순서가 비교된 매거 대상 앞에 있고 음수 값은 뒤에 있으며 0은 두 개의 상호 매거 값의 위치가 같다는 것을 나타낸다.
모든 열거 구성원에 대해 ordinal () 방법을 사용하여 열거 순서에 따라 위치 인덱스를 얻을 수 있습니다. 기본값은 0으로 시작합니다. 예를 들어

ShowEnum.java
public class ShowEnum {
  public static void main(String[] args) {
    for(OpConstants c : OpConstants.values()) {
      System.out.printf("%d %s%n", c.ordinal(), c);
    }
  }
} 
실행 결과:

0 TURN_LEFT
1 TURN_RIGHT
2 SHOOT
enum 키워드는 하나의 매개 클래스를 정의하는 데 사용할 수 있으며, 관련 상수를 하나의 클래스에 쓸 수 있습니다. 다음은 예를 들어 보겠습니다.
다음 코드:

class TestClass {

  private TestClass(){}// , 

  // A、B

  public static final TestClass A=new TestClass();

  public static final TestClass B=new TestClass();

}

열거 유형으로 대체할 수 있습니다.

enum TestClass01{

  A,B;

}

사용법:
하나의 열거에도 구조 함수, 필드와 방법이 있을 수 있다.

enum TestClass02{

  A("a") // 

  ,B("b");

  private String value;

  private TestClass02(String value){

    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(" ");

  }

  };

  public abstract void type();// 

}

테스트 방법:

public class Test02 {

  public static void main(String[] args){

    print(TestClass02.A);// 

  }

  public static void print(TestClass02 t){

    System.out.println(t.getValue());

  }

enum TestClass02{

  A("a")

  ,B("b");

  private String value;

  private TestClass02(String value){

    this.value=value;

  }

  public String getValue(){

    return this.value;

  }

}

}

실행 결과:

a

Author: 
Sign: , 。

좋은 웹페이지 즐겨찾기