首页 > 解决方案 > 设计一个在类级别使用通配符定义类型的类,并在使用该类时将通配符与特定类型相关联

问题描述

有一个类:

public class RepositoryHolder<T extends Repository<?>> {

      private Map<Class<?>, T> repoMap = new HashMap<Class<?>, T>();

      public <T1> void registerRepo(Class<T1> clazz, T repo){
          repoMap.put(clazz, repo);
      }
}

目的是将 T1 类型与 Repository <\?> 中的通配符链接起来

在 registerRepo() 方法中,clazz 类型应该与 T 类型的 repo 相关联。例如:如果 T=MyRepo1,那么只有下面的调用应该是有效的

    MyRepo1<String> myrepo1 = new MyRepo1<>();
    registerRepo(String.class, myrepo1 )

而不是这个:

    MyRepo1<Integer> myrepo1 = new MyRepo1<>();
    registerRepo(String.class, myrepo1 )

如何做到这一点?

标签: javagenerics

解决方案


推荐阅读