: 기본이 메서드에 전달
- 동물
- 고양이
- 개
- 암소
동물이다 클래스, 고양이, 개, 암소는 각각 서브 클래스입니다. 이 위대한 작품을
private boolean addObject(Animal toAdd, Animal defVal, Set<? extends Animal> vals)
, 내가 할 수있는 : 그들에서 작동하는 일반적인 기능을하는 것이 합리적 있도록
내가 지금하는 Set<Cat>
, Set<Dog>
및 Set<Cow>
이들 각각이 같은 방식으로 사용이 아무런 문제없이 자유롭게 내 세트를 지나친다.
문제가 나타납니다. 매개 변수 val에 Animal toAddress를 추가 할 수 없습니다. 검색 방법을 변경하면 다음과 같이 나타납니다.
private boolean addObject(Animal toAdd, Animal defVal, Set<? super Animal> vals)
매개 변수 값에 동물을 추가 할 수 있습니다. 이 작품은, 지금을 제외하고는, 내 하위 집합의 고양이, 개, 소들을 전달할 수 없습니다. 문제가되는
private <T> boolean addObject(T toAdd, T defVal, Set<? super T> vals)
, 나는 방법은 동물의 모두가 가지고 호출을 수행 할 수 있어야합니다 : 앞으로의 연구는 부팅없이 경고와 함께 다음 작품은, 나에게 알려줍니다. 이것은 간단한 캐스트를 사용하여 쉽게 얻을 수 있습니다.
((Animal)toAdd).getAnimalType()
일반적인 기능을 유지할 수 있고 캐스팅 할 필요가 없으므로이 문제를 해결할 수있는 방법이 있습니까? 이 예제의 경우 기본 세트, 동물 세트의 모든 세트를 설정하는 것 외에?
* 여기에 HTML 코드를 사용하지 않고 <> 사용할 수있는 방법이 있습니까? * => 예, 제 편집을 참조하십시오. SO에서 html을 사용할 필요가 거의 없습니다. – assylias
+1 귀하의 이전 연구를 위해. 슬프게도이 사이트에서는 드문 일입니다. –
@assylias 그 점에 대해 감사드립니다. 이제, 다음에 질문 할 필요가있을 때만 기억할 수 있다면. – Legowaffles