널 타입은 extends 할 수 없어요

널 타입은 extends 할 수 없어요

nullable_type_in_extends_clause 진단은 extends 절에 널 타입의 슈퍼클래스를 지정했을 때 분석기가 알려 주는 메시지예요. 널 타입을 상속 대상으로 쓰는 건 의미가 없어서, 분석기가 "널 타입은 확장할 수 없어요"라고 짚어 주는 거죠.

출처: nullable_type_in_extends_clause

본문

설명 (Description)

분석기는 클래스 선언이 extends 절로 슈퍼클래스를 지정할 때, 그 슈퍼클래스 뒤에 ?가 붙어 있으면 이 진단을 만들어 내요.

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

다만 슈퍼클래스의 타입 인자로는 널 타입을 쓰는 게 가능해요. 예를 들어 class A extends B<C?> {}처럼요.

예시 (Example)

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

class A {}

class B extends A? {}

흔한 해결책 (Common fixes)

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

class A {}

class B extends A {}

더 알아보기