Java 如何使用键和值属于特定层次结构的通用映射?

Java 如何使用键和值属于特定层次结构的通用映射?,java,generics,map,Java,Generics,Map,我的目标是创建一个映射,其键是类实例,其值是相应类的实例。意思是 映射(层次结构中的某个类-->其对应实例) 为此,我声明了Map-like Map<Class<? extends BaseService>, ? extends BaseService> serviceMap = new HashMap<Class<? extends BaseService>, BaseService>(); //Assume BaseService i

我的目标是创建一个映射,其键是类实例,其值是相应类的实例。意思是

映射(层次结构中的某个类-->其对应实例)

为此,我声明了Map-like

Map<Class<? extends BaseService>, ? extends BaseService> serviceMap = 
    new HashMap<Class<? extends BaseService>, BaseService>();
//Assume BaseService is at the root of hierarchy.

Map您使用的通配符与您的英语定义不完全一致。定义时:

Map<Class<? extends BaseService>, ? extends BaseService> serviceMap;

很高兴看到编译器的错误消息方法put(ClassFYI,您或多或少在重新发明,尽管它已经内置了很好的类型安全功能。(披露:我为Guava撰稿。)
Map<Class<? extends BaseService>, ? extends BaseService> serviceMap;
Map<Class<? extends BaseService>, BaseService> serviceMap;