avoid_shadowing_type_parameters
avoid_shadowing_type_parameters
중첩된 선언에서 타입 매개변수의 이름이 바깥쪽 선언의 타입 매개변수를 가리게 되면(섀도잉) 디버깅하기 어려운 미묘한 버그가 생길 수 있어요. 이런 상황을 막아 주는 린트 규칙을 설명해 드릴게요.
출처: 원문
본문
진단 메시지
The type parameter '{0}' shadows a type parameter from the enclosing {1}.
설명
분석기는 어떤 타입 매개변수가 바깥 선언의 타입 매개변수를 가릴 때 이 진단을 만들어요. 타입 매개변수를 다른 타입 매개변수로 가리는 것은 디버깅하기 어려운 미묘한 버그로 이어질 수 있어요.
예시
다음 코드는 메서드 m이 정의하는 타입 매개변수 T가 클래스 C가 정의하는 타입 매개변수 T를 가리기 때문에 이 진단이 발생해요.
class C<T> {
void m<T>() {}
}
일반적인 해결 방법
타입 매개변수 중 하나의 이름을 바꿔 주면 돼요.
class C<T> {
void m<S>() {}
}