초기화되지 않은 non-nullable 변수

초기화되지 않은 non-nullable 변수 (not_initialized_non_nullable_variable)

static 필드나 최상위(top-level) 변수가 non-nullable 타입인데 초기화식이 없을 때 나오는 진단이에요. 메시지는 "The non-nullable variable '{0}' must be initialized." — "non-nullable 변수 '{0}'은(는) 초기화되어야 해요"라고 알려줘요.

출처: not_initialized_non_nullable_variable

본문

언제 발생하나요?

static 필드나 최상위 변수의 타입이 non-nullable인데 초기화식이 없을 때 애널라이저가 이 진단을 만들어요. 초기화식이 없는 필드나 변수는 보통 null로 초기화되는데, 여기서는 타입이 null을 허용하지 않으니 명시적인 초기화식이 꼭 필요해요.

예시

다음 코드는 필드 fnull로 초기화될 수 없어서 이 진단이 발생해요.

class C {
  static int f;
}

비슷하게, 다음 코드는 최상위 변수 vnull로 초기화될 수 없어서 발생해요.

int v;

어떻게 고치나요?

필드나 변수를 null로 초기화할 수 없다면, non-null 값을 넣는 초기화식을 추가해요.

class C {
  static int f = 0;
}

필드나 변수를 null로 초기화해야 한다면, 타입을 nullable로 바꿔요.

int? v;

선언 자리에서는 초기화할 수 없지만 참조되기 전에는 항상 값이 채워진다면, late로 표시해요.

class C {
  static late int f;
}

더 알아보기

  • non-nullable 안전성 전반은 Null safety 문서에서 확인할 수 있어요.
  • 다른 진단과 함께 보려면 Diagnostics 목록을 참고하세요.