【问题标题】:How to make a hashmap that contains SomeType<K,V>?如何制作包含 SomeType<K,V> 的 hashmap?
【发布时间】:2013-07-10 04:24:10
【问题描述】:
map = new HashMap<Class<? extends AbstractDAO<K,V>>, AbstractDAO<K,V>>);

不允许

有没有办法实现这样的目标?

【问题讨论】:

  • 您需要KV。你有在课堂上声明它们吗?
  • 不,因为它们是可变的。我不能为 K 和 V 使用特定类型,因为扩展这个抽象类的 DAO 可以是 AbstractDAO 、 AbstractDAO 等类型.

标签: java jpa dao


【解决方案1】:

如下:

 class Test<K, V> {
    Map<K, V> map = new HashMap<Class<? extends AbstractDAO<K,V>>, AbstractDAO<K,V>>();
 }

【讨论】:

    【解决方案2】:

    当然可以,只要将KV 声明为类型即可。

    这里我将它们声明为 method 类型:

    public static class AbstractDAO<K, V> {
    }
    
    public static <K, V> void typedMethod() {
        Map<Class<? extends AbstractDAO<K, V>>, AbstractDAO<K, V>> map 
          = new HashMap<Class<? extends AbstractDAO<K, V>>, AbstractDAO<K, V>>();
    }
    

    或者,如果您不想声明类型,则将所有“未知”的内容都使用通配符:

    public static void method() {
        Map<Class<? extends AbstractDAO<?, ?>>, AbstractDAO<?, ?>> map = new HashMap<Class<? extends AbstractDAO<?, ?>>, AbstractDAO<?, ?>>();
    }
    

    以上代码全部编译。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-13
      • 2020-12-29
      • 1970-01-01
      • 2014-08-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-17
      • 2017-07-03
      相关资源
      最近更新 更多