Map <String에 T를 넣을 수 없습니까? 확장 T>
Aug 27 2020
private static final Map<String, ? extends TrackingInterface<TrackResponseObject>> map = new HashMap<>();
static {
map.put("dunzo", new DunzoShipment());
map.put("self", new SelfShipment());
}
public class DunzoShipment implements TrackingInterface<TrackResponseObject>,java.util.function.Supplier<TrackingInterface<TrackResponseObject>> {
//body
}
객체를지도에 넣는 동안 오류가 발생합니다.
메서드 put (String, capture # 1-of? extends TrackingInterface)는 Map <String, capture # 1-of? Extends TrackingInterface>는 인수 (String, DunzoShipment)에 적용 할 수 없습니다.
답변
2 Michael Aug 27 2020 at 10:24
? extends TrackingInterface
" 확장되는 것 "을 의미합니다 TrackingInterface. 우리는 모르는 뭔가 우리가 확신 할 수있다 DunzoShipment그들 중 하나입니다. 그래서지도에 삽입 할 수 없습니다.
PECS : 생산자 확장, 소비자 수퍼 . 이것은 소비자 (를 통해 put) 이므로을 사용할 수 없습니다 extends.
? extends부품을 제거 하면 컴파일됩니다.