将ConcurrentHashMap <string,b =“”>转换为ConcurrentHashMap <string,a =“”>当B实现A </string,> </string,>

时间:2014-02-13 16:37:43

标签: java casting concurrenthashmap

我有一个名为SerializableL的接口,由3个不同的类实现:

  • 产品
  • 横幅
  • 标签

我开始重构,并希望用多个方法调用替换多个段落。

public void load(ConcurrentHashMap<String, SerializableL> map, 
ArrayList<SerializableForL> preparedList)

我编写了以下代码并收到以下错误。

代码:

ConcurrentHashMap<String, SerializableForL> test = DBStore.Cache.get(tag);

错误:

Type mismatch: cannot convert from ConcurrentHashMap<String,Banner> to 
    ConcurrentHashMap<String,SerializableForL>

我该如何解决?

我想要一种方式来投射(ConcurrentHashMap<String,Banner>         ConcurrentHashMap<String,SerializableForL>)。

横幅是SerializableForL。

1 个答案:

答案 0 :(得分:4)

您无法将Map<String,Banner>分配给Map<String,SerializableForL> even if Banner implements SerializableForL

但是,如果您只关心SerializableForL的值,您应该能够写下:

ConcurrentMap<String, ? extends SerializableForL> test = DBStore.Cache.get(tag);