Set<? extends Politician>
을 인수로 사용하는 다른 함수로 전달되는 기존 Set<Trump>
이 있습니다. Set<? extends Politician>
에는 Politician
Object 또는 Trump
Object 만 포함됩니다.<? extends Animal>
Politican
클래스는 수정할 수 없습니다. Trump
클래스는 수정할 수 있습니다.
다음을 수행하는 방법이 있습니까? 아니면이 작업을 수행 할 수 있도록 파생 클래스 (Trump
)를 다시 설계해야합니까?
public Set<Trump> getSetOfTrump(Set<? extends Politician> politicianSet)
{
//do some processing
for(Politician pol : politicianSet){ //compiler is ok.. but I dont need Politician Object here
}
for(Trump t : politicianSet){ // any way to get Trump Objects out of politicianSet?
}
}
'instanceof' 또는 반사를 사용하지 않고? – bradimus
'instanceof'를 사용하면 코드 냄새의 증거가 될 수 있습니다.하지만 ... 만약 당신이 슈퍼 타입을위한 코드에 접근 할 수 없다면, 알려진 타입의 서브 타입 인스턴스를 조작 할 때 가장 빠르고, 가장 저렴한 옵션이 될 것입니다 유형. – scottb
@bradimus .. 예 .. 리플렉션 또는 instanceof없이 작업을 수행하려면 ... 파생 클래스 또는 함수의 인수를 다시 디자인하는 것이 좋습니다. – user46743