2013-04-25 1 views
0

나는 다음과 multimap은을 만들려고하고 Multimap과하는추가 확장 클래스는

방법 put(String, capture#2-of ? extends A) 형식이 Multimap<String,capture#2-of ? extends A>이면 (String, B) 인수에는 적용 할 수 없습니다.

나는 BA를 확장하는 B 때문에 추가 할 수 있어야합니다. 그러나 나는 할 수 없다.

답변

2

당신이 유형 A 또는 A의 하위 유형의 객체에 String에서 multimap은 의미 경우, 그는 Multimap<String, A>입니다. String에서 특정이지만 알 수없는 하위 유형의 객체에 대한 다중 맵을 의미하는 경우 Multimap<String, ? extends A>입니다.

+0

예를 들어 C도 A를 확장하고 멀티 맵에 B와 C를 모두 추가하려고합니다. 그걸 얻기 위해서는 Multimap을 구성하지 않아야합니까? 연장 A ?? – Ikshvak

+1

아니요, 그러지 마세요. 이 경우에는'Multimap '을 원합니다. –

+1

'Multimap 는'A '를 확장하는'X'라는 특정 타입이 있고'Multimap'은 실제로'Multimap '이지만 실제로는'X'가 무엇인지 모릅니다. 'null '을 제외한 _any_ 값을'Multimap '를 확장합니다. –

0

그들은 키가

? extends A 

을하기 때문에 당신은 위해에 값을 추가 할 수 없습니다 및 컴파일러는 하한 유형을 알 수 없습니다.