Java에서 열거형 선언
Java에서 DownloadType
에 대한 enum
을 선언하는 것이 이 기사의 주제입니다. 열거형
의 목적부터 살펴보겠습니다.
Java에서 Enums
의 목적
- 열거형은
정수
와 같은 외부 값에 의존할 필요 없이 개체 모음이 프로그램 내에서 상수로 유지될 수 있도록 사용됩니다. - Java에서
enums
는switch
문의 입력으로 사용될 수 있으며 다른 비교 방법 중에서==
또는 등호 연산자를 사용하여 안전하게 비교할 수 있습니다.
enum
은 기본적으로 해당 유형의 객체이며 프리미티브가 아니기 때문에 필요한 경우 enum
에서 값을 추출하기 위해 메소드를 호출하거나 .value
를 사용해야 하는 상황을 피할 수 없습니다.
시작하려면 int
가 필요한지 스스로에게 물어봐야 합니다. 그런 다음 두 가지 가능한 결과가 있으며 다음 섹션에서 살펴보겠습니다.
int
가 필요합니다
정수를 원할 때 형식 안전성이 손실되고 사용자가 API에 유효하지 않은 정보를 보낼 가능성을 감수할 수 있습니다. 아래 상수도 정수로 선언할 수 있습니다.
정적 멤버만 있고 Java에서 정적 클래스를 시뮬레이트하려는 경우 생성자를 개인
으로 만드십시오.
public final class DownloadType {
public static final int audio = 0;
public static final int video = 1;
public static final int audio_and_video = 2;
private DownloadType() {}
}
.ordinal()
함수는 값 필드의 존재 여부에 관계없이 사용할 수 있으므로 enum
은 다음과 같이 정의할 수 있습니다.
enum DownloadType { audio, video, audio_and_video }
enum
값에 대해 일치하는 번호를 얻으려면 .ordinal()
함수를 사용하십시오. 열거된 각 값에는 0부터 시작하여 선언된 것과 동일한 순서로 각 연속 값에 대해 1씩 증가하는 고유 번호가 자동으로 할당됩니다.
DownloadType.audio_and_video.ordinal();
int
가 필요하지 않음
enum
의 정수 값이 항상 신뢰할 수 있는 것은 아닙니다. 대신 값 자체를 사용하십시오.
연관된 정수가 불필요한 경우 대신 다음을 시도하십시오.
private enum DownloadType { audio, video, audio_and_video }
DownloadType dt = MyObj.getDownloadType();
if (dt == DownloadType.audio) {
}
switch
및 if()
본문에 논리를 작성하여 작업을 수행할 수 있습니다. 또한 if()
조건 대신 switch
문을 사용할 수 있습니다.
private enum DownloadType { audio, video, audio_and_video }
DownloadType dt = MyObj.getDownloadType();
switch (dt) {
case audio:
break;
case video:
break;
case audio_and_video:
break;
}
좋은 습관
- 열거형 상수 대신 정수 상수를 사용하면 프로그램의 형식 안전성이 손상됩니다. 그러므로 그렇게 하지 않도록 하십시오.
- 반드시 그럴 필요가 없는 경우 코드에서
enum
과 정수를 결합하지 마십시오.
I have been working as a Flutter app developer for a year now. Firebase and SQLite have been crucial in the development of my android apps. I have experience with C#, Windows Form Based C#, C, Java, PHP on WampServer, and HTML/CSS on MYSQL, and I have authored articles on their theory and issue solving. I'm a senior in an undergraduate program for a bachelor's degree in Information Technology.
LinkedIn