type_parameter_supertype_of_its_bound: 타입 매개변수가 자기 자신의 상한의 슈퍼타입이 될 수 없어요
type_parameter_supertype_of_its_bound: 타입 매개변수가 자기 자신의 상한의 슈퍼타입이 될 수 없어요
분석기가 내보내는 진단에는 이름이 있어요. type_parameter_supertype_of_its_bound는 타입 매개변수의 바운드(bound)가 자기 자신인 경우 알려주는 진단이에요. 원문의 요지는 "타입 매개변수는 자기 자신의 상한의 슈퍼타입이 될 수 없다"는 내용이에요.
본문
설명
분석기는 타입 매개변수의 바운드(extends 키워드 다음에 오는 타입)가 직접이든 간접적이든 그 타입 매개변수 자신일 때 이 진단을 만들어요. 타입 매개변수가 "자기 자신과 같아야 한다"거나 "자기 자신의 서브타입이어야 한다"고 말하는 건 아무 의미가 없어요. 어차피 항상 자기 자신과 같으니까요.
예시
다음 코드는 T의 바운드가 T라서 이 진단을 만들어요.
class C<T extends T> {}
다음 코드는 T1의 바운드가 T2이고, T2의 바운드가 T1이라서 결과적으로 T1의 바운드가 T1이 되어 이 진단을 만들어요.
class C<T1 extends T2, T2 extends T1> {}
흔한 해결 방법
타입 매개변수가 어떤 타입의 서브클래스여야 한다면, 바운드를 필요한 타입으로 바꿔요.
class C<T extends num> {}
타입 매개변수가 어떤 타입이든 될 수 있다면, extends 절을 제거해요.
class C<T> {}