열거형(enum)은 인스턴스화할 수 없음

열거형(enum)은 인스턴스화할 수 없음 (instantiate_enum)

이 문서는 Dart 분석기(analyzer)가 만들어 내는 instantiate_enum 진단(diagnostic)에 대한 상세한 내용을 설명하는 문서예요. 간단히 말하면, 열거형(enum)을 생성자 호출로 인스턴스화하려 할 때 분석기가 이 진단을 알려 줘요. 왜 안 되는지와 어떻게 사용해야 하는지 차근차근 살펴볼게요.

출처: instantiate_enum

본문

진단 메시지

Enums can't be instantiated.

열거형은 인스턴스화할 수 없어요.

설명

분석기는 열거형을 인스턴스화하는 코드를 발견하면 이 진단을 만들어 내요. 열거형은 생성자를 호출해서 인스턴스를 만드는 것이 허용되지 않아요. 열거형에는 선언에서 이름을 붙인 인스턴스들만 존재할 수 있기 때문이에요.

예시

다음 코드는 열거형 EE()로 인스턴스화하고 있기 때문에 이 진단을 만들어 내요.

// @dart = 2.16
enum E { a }

var e = E();

일반적인 해결 방법

열거형의 인스턴스를 사용하려는 의도였다면, 열거형에 정의된 상수 중 하나를 참조하면 돼요.

// @dart = 2.16
enum E { a }

var e = E.a;

클래스의 인스턴스를 사용하려는 의도였다면, 열거형 이름 대신 그 클래스의 이름을 사용하면 돼요.

더 알아보기

  • Dart 분석기 진단 목록에서 다른 진단들도 함께 살펴보세요.
  • 열거형을 어떻게 선언하고 사용하는지 자세히 알고 싶다면 Enums 문서를 참고해요.