이 작업을 수행하는 방법을 알았지 만 예기치 않은 동작이 발생하고 있으므로 분명히 누락되었습니다. 여기에 문제가 있습니다.추상적 인 메서드를 서명의 제네릭으로 올바르게 재정의하는 방법
기본 클래스 :
public abstract class Base<T>
{
abstract public void foo(List<? extends T> l);
}
파생 클래스 :
public class Derived<T> extends Base
{
@Override
public void foo(List<? extends T> l) { return; }
}
기본 클래스 잘 준수하지만 파생 클래스를 컴파일 할 때 내가 얻을 :
Derived.java를 : 3 : 파생 클래스는 추상 클래스가 아니며 기본 클래스 foo (java.util.List)의 추상 메서드를 재정의하지 않습니다.
파생 (210 개)공용 클래스는 자료를 확장
^
Derived.java:5 :@Override ^
이 오류
매개 변수의 제네릭을 무시하거나 슈퍼에서 메소드를 구현하지 않는 방법 List<? extends T>
이 문제의 원인 인 것으로 보입니다. 두 부분의 서명을 모두 기본 유형 int
으로 바꾸면 잘 처리됩니다.
아무도 나에게 무슨 일이 일어나는지 말해 줄 수 있습니까? 당신은 또한 당신의 클래스 선언의 형식 매개 변수를 전달할 수 있습니다
와우, 그런 간단한 해결책. 제네릭의 유형을 지정하는 것을 잊었을 때 complier 경고에 익숙해졌지만,이 경우에는 하나도주지 않습니다. –