널 타입은 implements 할 수 없어요

널 타입은 implements 할 수 없어요

nullable_type_in_implements_clause 진단은 implements 절에 널 타입의 인터페이스를 지정했을 때 분석기가 알려 주는 메시지예요. 널 타입을 구현 대상으로 쓰는 건 의미가 없어서, "널 타입은 implements 할 수 없어요"라고 짚어 주는 거죠.

출처: nullable_type_in_implements_clause

본문

설명 (Description)

분석기는 클래스, enum, mixin, 또는 extension type 선언이 implements 절을 가질 때, 그 인터페이스 뒤에 ?가 붙어 있으면 이 진단을 만들어 내요.

널 인터페이스를 지정하는 건 유효하지 않아요. 그렇게 해도 아무 의미가 없거든요. implements 절을 담은 클래스가 상속받는 인터페이스가 달라지지 않기 때문이에요.

다만 인터페이스의 타입 인자로는 널 타입을 쓰는 게 가능해요. 예를 들어 class A implements B<C?> {}처럼요.

예시 (Example)

아래 코드는 A?가 널 타입인데 널 타입은 implements 절에 쓸 수 없어서 이 진단이 발생해요.

class A {}

class B implements A? {}

흔한 해결책 (Common fixes)

타입에서 물음표(?)를 떼면 돼요.

class A {}

class B implements A {}

더 알아보기