invalid_use_of_null_value — 값이 항상 null인 표현식의 역참조
invalid_use_of_null_value — 값이 항상 null인 표현식의 역참조
항상 null이 될 수밖에 없는 표현식을 역참조(dereference)할 때 나타나는 진단이에요. 이 코드가 왜 문제인지, 어떻게 고치는지 차근차근 살펴볼게요.
본문
분석기(analyzer)는 표현식의 값이 항상 null 일 때 그 표현식을 역참조하게 되면 이 진단을 내보내요.
예시
아래 코드는 x가 항상 null이라서 이 진단이 나타나요.
int f(Null x) {
return x.length;
}
Null 타입은 null 하나만 값으로 가질 수 있으니, x.length 같은 멤버 접근은 항상 실패할 수밖에 없어요.
흔한 해결 방법
만약 값이 null이 아닌 다른 값도 가질 수 있어야 한다면, 표현식의 타입을 바꿔주면 돼요.
int f(String? x) {
return x!.length;
}
여기서는 타입을 String?(nullable 문자열)로 바꾸고, x!.length처럼 null 단언 연산자(!)를 붙여서 안전하지 않은 역참조가 정당하다고 분석기에게 알려주고 있어요. 물론 실제로 x가 null이 아님이 보장될 때만 !를 쓰는 게 안전하겠죠.
더 알아보기
- Dart에서 null 안전성과
Null타입, 그리고!연산자에 대한 더 자세한 내용은 Dart 언어 투어 — null safety 문서를 확인해 보세요. - nullable 표현식에 안전하게 접근하는 방법(예:
?.,??연산자)도 함께 공부해 두면 도움이 돼요.