다른 일반적인 Java 제네릭 질문을 보았습니다. 여전히 혼란 스럽습니다. WeightedThing<T>
이 (단지 어떤 임의의 유형에 가중치를 추가)하고 WeightedVector
가 (아니, WeightedVector
그냥 WeightedThing<Vector>
되지 않습니다)있는 사용자 정의 Vector
클래스 서브 클래스는 다음과 같습니다 중첩 된 제네릭을 사용하는 변환 할 수없는 유형
가장 가까운 이웃 검색을 수행하고 주어진 쿼리 벡터 및 해당 거리에 가장 가까운 벡터 목록을 반환하고 싶습니다.
public List<WeightedThing<? extends Vector>> search(Vector, int limit) {...}
내가
List<WeightedThing<WeightedVector>> neighbors = (List<WeightedThing<WeightedVector>>)search(query, 1);
는 IntelliJ를 오류로 표시하지 않습니다 (작동하지 않습니다 할 수있는 희망하지만, 썬의 jdk7u10로 컴파일이 들어, 나는 search
방법을 정의 Mac OS X이 실패 함). Vector
과 동일한 기능을 호출하지도 않습니다. Object
에 업 캐스트를 추가하여 컴파일하도록 강제 할 수 있지만 이는 끔찍한 것처럼 보입니다.
목적은 모든 유형의 벡터를 검색하고 추가 할 수 있지만 WeightedVectors 만 추가 한 경우 결과를 다시 WeightedVectors로 캐스팅하려고합니다.
이 정보가 유용할까요? http://stackoverflow.com/questions/2522155/java-generics-parameters-with-base-of-the-generic-parameter – INS
제안 해 주셔서 감사합니다. 그러나 정말로, 아래 Ale E의 답변에 대한 내 의견을 참조하십시오. –