자바의 매거진(enum) 유형을 깊이 있게 이야기하다
여러분의 일상적인 프로그래밍에서 왕왕 이런'데이터 집합'이 존재하는데 그들의 수치는 프로그램에서 안정적이고'데이터 집합'의 요소는 유한하다.예를 들어 월요일부터 일요일까지 7개의 데이터 요소는 일주일의'데이터 집합'을 구성하고 봄, 여름, 가을, 겨울 4개의 데이터 요소는 사계절의'데이터 집합'을 구성한다.자바에서 어떻게 이런 데이터 집합을 더욱 잘 사용할 수 있습니까?그래서 매거진마다 쓸모가 있게 되었다
매거는 사실 하나의 유형이다. int,char와 차이가 많지 않다. 변수를 정의할 때 입력을 제한하는 것이다. 너는 enum에 규정된 값만 부여할 수 있다.
열거 (enum) 구현
JDK5에서 자바 매거 유형의 실현을 제공했는데 새로운 유형이라기보다는 문법 설탕이다.
public enum Season {
SPRING,
SUMMER,
AUTUMN,
WINTER
}
역컴파일 도구를 통해 이 코드가 어떻게 실현되었는지 보십시오. 역컴파일된 코드는 다음과 같습니다.
public final class Season extends Enum {
public static Season[] values() {
return (Season[])$VALUES.clone();
}
public static Season valueOf(String s) {
return (Season)Enum.valueOf(Season, s);
}
private Season(String s, int i) {
super(s, i);
}
public static final Season SPRING;
public static final Season SUMMER;
public static final Season AUTUMN;
public static final Season WINTER;
private static final Season $VALUES[];
static {
SPRING = new Season("SPRING", 0);
SUMMER = new Season("SUMMER", 1);
AUTUMN = new Season("AUTUMN", 2);
WINTER = new Season("WINTER", 3);
$VALUES = (new Season[] {
SPRING, SUMMER, AUTUMN, WINTER
});
}
}
역컴파일된 코드를 통해 다음을 확인할 수 있습니다.1、
Season
는 일반적인 종류로 계승Enum
되고 final
키워드 수식을 통해 계승되지 않도록 한다.2. 매거 중
SPRING
,SUMMER
,AUTUMN
과WINTER
류의 정적 실례이며 류구조기Season
방법에서 초기화한다.3.
<clinit>
방법은 사유 변수values()
의 사본을 되돌려주고 $VALUES[]
도 $VALUES[]
방법에서 초기화한다.열거 (enum) 를 사용하는 방법
1. 단일 모드
우리는 이미 클래스 구조기
<clinit>
가 클래스 불러오는 초기화 단계에서만 실행될 수 있다는 것을 알고 있다. 그래서 매거진 모든 실례는 자바 더미에 있고 사본이 하나밖에 없다. 이런 특성은 매거진으로 하여금 단례 모델을 쉽게 실현할 수 있게 한다. 이것이 바로 Effective 자바 저자인 조쉬 블락이 단리 모델을 실현하는 방식을 제창하는 것이다.
public enum Singleton { INSTANCE;}
2、switch에서 사용3. 사용자 정의 필드 및 방법
매거 (enum) 에서 기본 필드와 방법을 제외하고 업무 논리에 대한 사용자 정의를 할 수 있습니다.
public enum EnumTest {
PLUS("+") {
@Override
public int bind(int arg1, int arg2) {
return arg1 + arg2;
}
},
SUB("-") {
@Override
public int bind(int arg1, int arg2) {
return arg1 - arg2;
}
};
final String operation;
EnumTest(String operation) {
this.operation = operation;
}
abstract int bind(int arg1, int arg2);
}
4. 인터페이스 구현
interface Operation{
int operate(int arg1, int arg2);
}
public enum EnumTest implements Operation {
PLUS("+") {
@Override
public int operate(int arg1, int arg2) {
return arg1 + arg2;
}
},
SUB("-") {
@Override
public int operate(int arg1, int arg2) {
return arg1 - arg2;
}
};
final String operation;
EnumTest(String operation) {
this.operation = operation;
}
}
실제 응용 프로그램에서는 "+", "-"를 키로, PLUS 및 SUB<clinit>
를 value
에 미리 저장할 수 있으며, 구체적인 사용 방식은 다음과 같다.
Operation operation = hashMap.get("+");
int result = operation.bind(1, 2);
총결산이상은 자바의 매거 유형에 대한 모든 내용입니다. 본고를 통해 자바의 매거에 대한 소개를 통해 여러분께 도움을 드릴 수 있기를 바랍니다.궁금한 게 있으면 댓글로 얘기해도 돼요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
38. Java의 Leetcode 솔루션텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.