중화사전망 - 자전 검색 - 자바 열거 형의 역할은 무엇입니까?

자바 열거 형의 역할은 무엇입니까?

열거는 유형 불일치에 관계없이 int 매개변수가 가져올 수 있는 모호한 개념을 명시적으로 대체할 수 있도록 매개변수를 표준화하는 형식입니다. 열거형은 클래스와 배열과 같습니다.

Sun 에 도입된 새 키워드로 Enum 은 특별한 클래스처럼 보입니다. 또한 자체 변수를 가지고, 자체 메서드를 정의하고, 하나 이상의 인터페이스를 구현할 수 있습니다. 열거 유형을 선언할 때 해당 열거 유형에는 다음과 같은 특징이 있습니다.

1. 클라이언트 코드가 enum 의 새 인스턴스를 만들 수 없도록 하는 공용 생성자를 가질 수 없습니다.

모든 열거 값은 공통적이고 정적이며 최종적입니다. 이는 열거 값에만 적용됩니다. 일반 클래스에서 변수를 정의하는 것처럼 다른 유형의 열거되지 않은 변수를 정의할 수 있으며, 이러한 변수는 원하는 수정자를 사용할 수 있습니다.

3. 기본적으로 enum 은 java.lang.Comparable 인터페이스를 구현합니다.

4.enum 은 toString 메서드를 다시 작성하므로 Color 를 호출하면 됩니다. 기본적으로 문자열 "Blue" 가 반환됩니다.

5.enum 은 toString 메소드에 해당하는 valueOf 메소드를 제공합니다. Valueof ("blue") 를 호출하면 색상이 반환됩니다. 따라서 toString 메서드를 직접 다시 작성할 때 이 점을 염두에 두어야 하며 그에 따라 valueOf 메서드를 다시 작성해야 합니다.

6.enum 은 또한 모든 열거 값을 쉽게 트래버스할 수 있는 values 메소드를 제공합니다.

7.enum 에는 열거 클래스의 열거 값 순서를 반환하는 oridinal 메서드도 있습니다. 이 순서는 열거 값이 선언된 순서에 따라 달라집니다. 여기서 Color 입니다. Red.ordinal () 은 0 을 반환합니다.

이러한 기본 기능을 이해하면 어떻게 사용하는지 살펴보겠습니다.

1. 모든 열거 값을 순회합니다. Values 메서드를 이해하면 ForEach 루프를 사용하여 열거 값을 능숙하게 반복할 수 있습니다.

For(Color c:Color. values ())

System.out.println ("조회 값:"+c ");

2. 열거에서 메소드 및 변수를 정의합니다. 예를 들어, 색상을 임의로 반환하는 방법을 Color 에 추가할 수 있습니다.

공용 열거 색상 {

빨간색,

녹색,

파란색;

개인 정적 int number = Color.values () 입니다. 길이;

공용 정적 색상 getRandomColor(){

Longrandom = system.currenttimemillis ()% number;

스위치 ((int)random ){

시나리오 0:

색상을 반환합니다. 빨간색;

사례 1:

색상을 반환합니다. 녹색;

사례 2:

색상을 반환합니다. 파란색;

기본값: 색상을 반환합니다. 빨간색;

}

}

}

열거 유형에서 변수와 메서드를 정의하는 것은 일반 클래스에서 메서드 및 변수를 정의하는 것과 다르지 않음을 알 수 있습니다. 단, 변수 및 메서드 정의는 모든 열거 값 정의 뒤에 배치해야 합니다. 그렇지 않으면 컴파일러에서 오류를 제공합니다.

3.Override) 메소드의 toString, valueOf.

우리는 이미 enum 이 toString, valueOf 등의 방법을 제공한다는 것을 알고 있으며, 많은 경우 기본 toString 방법을 덮어써야 한다면 enum 을 어떻게 처리해야 할까요? 사실, 이것은 일반 클래스를 덮는 toString 메서드와 다르지 않다.

......

공용 문자열 toString(){

전환 (이) {

빨간색 사례:

색상 으로 돌아갑니다. 빨간색 ";

친환경 사례:

색상 으로 돌아갑니다. 녹색 ";

파란색 케이스:

색상 으로 돌아갑니다. 파란색 ";

기본값:

"알 수 없는 색상" 으로 돌아갑니다.

}

}

......

이 시점에서 이전 순회 코드로 인쇄된 내용을 볼 수 있습니다.

색깔. 빨강

색깔. 그린 (성); 녹색

색깔. 블루

대신

빨강

그린 (성); 녹색

파란색.

ToString 이 실제로 오버로드된 것을 볼 수 있습니다. 일반적으로 toString 을 다시 작성할 때 valueOf 메서드도 다시 작성하여 서로 일관성을 유지해야 합니다.

4. 생성자 사용

Enum 에는 공용 생성자가 있을 수 없지만 enum 내에서 사용할 전용 생성자를 정의할 수 있습니다. 색깔을 예로 들어보죠.

공용 열거 색상 {

빨간색 ("이것은 빨간색입니다"),

녹색 ("이것은 녹색"),

파란색 ("이것은 파란색입니다");

사현 desc;;

색상 (문자열 desc ){

This.desc = desc;

}

공용 문자열 get desc(){

This.desc 를 반환합니다

}

}

여기서는 각 색상에 대한 설명 정보를 제공한 다음 생성자를 정의하여 이 설명 정보를 수락합니다.

생성자는 내부에서만 사용할 수 있고 클라이언트 코드는 열거 값의 인스턴스를 만들 수 없도록 공용 또는 보호될 수 없습니다. 열거 값이 public static final 의 상수라는 것을 알고 있기 때문에 이것은 완전히 합리적입니다.

5. 특정 인터페이스 구현

우리는 이미 enum 이 변수와 메서드를 정의할 수 있다는 것을 알고 있으며, 인터페이스 구현은 일반 클래스 구현과 동일하므로 여기서는 예를 들어 볼 수 없습니다.

6. 사용자 고유의 열거 값을 정의하는 방법입니다.

앞서 살펴본 바와 같이 enum 에 대한 몇 가지 방법을 정의할 수 있습니다. 실제로 각 열거 값에 대한 방법을 정의할 수도 있습니다. 이렇게 하면 이전에 toString 을 다시 작성한 예제를 이렇게 다시 작성할 수 있습니다.

공용 열거 색상 {

빨간색 {

공용 문자열 toString(){

색상 으로 돌아갑니다. 빨간색 ";

}

},

녹색 {

공용 문자열 toString(){

색상 으로 돌아갑니다. 녹색 ";

}

},

파란색 {

공용 문자열 toString(){

색상 으로 돌아갑니다. 파란색 ";

}

}

}

논리적으로 이것은 원래의' 글로벌' toString 방법보다 더 명확하다.

일반적으로 enum 은 새로 정의된 유형으로 프로그래머가 보다 간단하고 이해하기 쉬운 코드를 작성하는 데 도움을 줄 수 있기를 희망합니다.

사람들은 일반적으로 enum 의 일부 고급 기능을 과도하게 사용할 필요가 없다고 생각합니다. 그렇지 않으면 이해하기 쉬운 원래 의도를 위반하게 됩니다.