2012-10-11 3 views
2
public myConstuctor(Map<String, ?> myMap) { 

    if (myMap.containsKey(MY_KEY)) {    

     myMap.put(MY_KEY, someObject); 
    } 

    someMemberVariable = new someClass(myMap); 
} 

무제한 와일드 카드로 인해지도에 개체를 넣을 수 없습니다. 나는 와일드 카드에 익숙하지 않다. 무엇이 어렵습니까 (나를 위해 ..) 나는 생성자의 입력 유형 (즉, myMap)을 변경할 수 없지만 맵에 객체를 넣어야합니다.무제한 와일드 카드로 객체를 캐스팅해야합니다 ....하지만 내 경우에는 어떻게됩니까?

누군가가 도움을 줄 수 있습니까 ..? 미리 감사드립니다!

답변

0

당신이 someObject의 종류가 myMap와 호환 믿는다면,

((Map)myMap).put(k, v); 
+0

야호! 그것은 작동합니다 :) 정말 고마워요! Map에 대한 맵핑을 캐스팅하여 무한 와일드 카드 문제가 발생하는 이유를 설명해 주시겠습니까? 정말 솔루션을 이해하기를 바랄뿐입니다. myMap이 항상 맵이 아닌가요? 다시 한 번 감사드립니다! – user1739658

+0

오, 더 많은 생각을 한 후에 키와 값의 유형을 지정하지 않으면 슈퍼 라이드의 유형 (그러한 단어가 있습니까? : P) 언 바운드가 아닌가? – user1739658

+0

"원시"유형으로 형변환하면 모든 제네릭 유형 검사가 중단됩니다. 좋은 옛날 제네릭 시대로 돌아가. – irreputable