请教一下关于 Java 泛型的问题。

查看 135|回复 14
ftsland   
你是想 Cache 里面 Value 可以保存任意类型吗?
![这是图片 1]( https://meee.com.tw/R8cfkNx "这是图片 1")
![这是图片 2]( https://meee.com.tw/KLKSVhy "这是图片 2")
ftsland   
MD 不知道为啥发不出来, 如果需要 Cache 里面是任意类型, 不要使用 CacheHelper , 使用 CacheHelper , Cache 用 Cache  getByKey 去掉 class 参数,
Renco
OP
  
@ftsland #11 好,我试试,谢谢!
bli22ard   
建议
public  T get(String cacheKey,K key){
        Cache cache=cacheMap.get(cacheKey);
        if(cache!=null){
            return (T) cache.get(key);
        }
        return null;
    }
你是要限定 V 的类型范围,因为你已经限定了 cache 的 value 是个 V 类型。传 Class clazz , 那你的 V 类型还不如直接定义为 Object 。另外你的成员变量 cacheMap 会有并发安全问题,当然如果 CacheHelper 不会有并发问题,那可以忽略并发安全问题
xiangbohua   
好像不是因为范形擦除的原因,我觉得还是因为类上面定义的类型是 V ,但是方法上传的是 T ,T 和 V 之间又没有范性约束那么直接理解为两个不相关的类就好了。既然不相关,那编译器只能认为返回的是 object (拿不到任何类型限定信息)。
如果有错误可指出
您需要登录后才可以回帖 登录 | 立即注册

返回顶部