2012-07-23 2 views
0

나는 Map<String,Object>을 취하는 메서드 (가령 doSomething)를 가지고 있는데, Map<String,Foo> (Foo extends Object, 물론)을 전달하고 싶습니다. 컴파일 할 때 주어진 유형에 doSomething을 적용 할 수 없다고합니다.다형성 제네릭을 사용하여지도

method doSomething in class FooMapChoo cannot be applied to given types; 
        doSomething(map); 
        ^
     required: Map<String,Object> 
     found: Map<String,Foo> 

푸가 다형 Object로 캐스팅해야한다고 나에게 보인다

public class FooMapChoo { 

     private Map<String, Foo> map; 

     public void doSomething(Map<String,Object>) { 
     } 

     public static void main(String...args) { 
      doSomething(map); 
     } 

    } 

컴파일러 출력 : 여기 내 코드입니다. 또한 map에서 Map<String,Object>으로 캐스팅을 시도했는데, 이는 "불변의 유형"이라고 말합니다. 다형성 문제를 해결하기 위해 무엇을 할 수 있습니까?

+0

중복 가능성을 사용할 필요가? 왜 Java의 제네릭은 암시 적으로 다형성이 아닙니까?] (http://stackoverflow.com/questions/2745265/is-listdog-a-subclass-of-listanimal-why-arent-javas-generics-implicit) – trutheality

+0

맞아요. . 그 중 하나를 찾아 주셔서 감사합니다. – LastStar007

+0

이제 질문을 닫는 방법을 알고 있습니까? – LastStar007

답변

6

당신은 [`목록 은``목록 `의 서브 클래스의 와일드 카드

Map<String, ? extends Object> 
+2

또는'Map '이 할 것입니다. +1 –

+2

실재 남성이 명시 적으로 Object를 확장합니다. :) – LastStar007

관련 문제