에 캐스트 할 수 없습니다.아동 클래스는 일반적인 부모 클래스
이Foo<Qux> foo = new Foo<Qux>();
foo.setA(new C());
마지막 줄이 형 푸에 오류 "세타를 제공합니다
class Foo<T> extends Bar<T> {
setA(A<T> a){ ...}
}
이 지금은이 모든를 사용하려면 : 지금은 같은 매개 변수를 사용하여 다른 클래스 (또한 일반)가 인수 C "에 대한 응용 프로그램이 아닙니다.
무엇이 잘못되었는지 알 수 없습니다. 내 생각에는 C가 사용되는 매개 변수 유형 인 A를 확장하는 B를 확장하기 때문에 작동해야합니다. 내 가정과 관련하여 잘못된 힌트를 주셔서 감사합니다.
업데이트 : 올리 (Oli)가 게시 한 코드를 사용하여 오류의 원인에보다 가까워졌습니다. B를 원래 클래스로 바꾼 후에 발생합니다. 따라서 "generic"부분을 제거한 클래스에 위치해야합니다. 부모 클래스에 캐스트하려고 시도 할 때 Eclipse는 말할 수 없습니다. 내가 거기에 계속 찾고거야, 나는 그것이 작동해야합니다 알고 ... 문제는이 감소 할 수 있습니다
이이 오류가 발생 내 코드에서C c = new C();
A<Qux> a = (A<Qux>)c;
Cannot cast from C to A<Qux>
나는 여전히이 이것이 일어나는 이유. 하위 클래스를 상위 클래스로 캐스팅 할 수없는 이유가 있습니까? 그런 이유가 없습니다. 그런 문제가 생기면 그것은 단지 IDE 일 수 있습니다. 나는 다른 이유로 Eclipse를 다시 시작하고 다시 확인했다.
언급 한 오류가 표시되지 않습니다 (위의 선언 된'foo' 인스턴스에서'setA'가 호출 된 것으로 가정합니다). –
전화에 대한 힌트는 – Yashima
나는 아직도 찾고있다 ... 내 수업으로 그의 코드를 작성하여 무슨 일이 일어나는지 알아 낸다. – Yashima