Java에서 열거형 선언

Muhammad Zeeshan 2023년10월12일
  1. Java에서 Enums의 목적
  2. int가 필요합니다
  3. int가 필요하지 않음
Java에서 열거형 선언

Java에서 DownloadType에 대한 enum을 선언하는 것이 이 기사의 주제입니다. 열거형의 목적부터 살펴보겠습니다.

Java에서 Enums의 목적

  1. 열거형은 정수와 같은 외부 값에 의존할 필요 없이 개체 모음이 프로그램 내에서 상수로 유지될 수 있도록 사용됩니다.
  2. Java에서 enumsswitch문의 입력으로 사용될 수 있으며 다른 비교 방법 중에서 == 또는 등호 연산자를 사용하여 안전하게 비교할 수 있습니다.

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) {
}

switchif() 본문에 논리를 작성하여 작업을 수행할 수 있습니다. 또한 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;
}

좋은 습관

  1. 열거형 상수 대신 정수 상수를 사용하면 프로그램의 형식 안전성이 손상됩니다. 그러므로 그렇게 하지 않도록 하십시오.
  2. 반드시 그럴 필요가 없는 경우 코드에서 enum과 정수를 결합하지 마십시오.
Muhammad Zeeshan avatar Muhammad Zeeshan avatar

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

관련 문장 - Java Enum