我有一个LinkedHashSet的ThisType值。 ThisType正在实现接口ThatType。
我需要这个集合的多态使用——能够将它指向为LinkedHashSet< ThatType >。
这是怎么做到的?
我知道这是一个幼稚的问题,但我尝试过的几件事没有奏效,我想以正确的方式去做。
提前致谢。
//================================
更新:更多细节:
在下面的代码中,ThisType实现了 ThatType —— ThatType是一个接口。
//LinkedHashMap<Integer, ? extends ThatType> theMap = new LinkedHashMap<>();
LinkedHashMap<Integer, ThisType> theMap = new LinkedHashMap<>();
for (Integer key:intArray) {
ThisType a = new ThisType();
if (theMap.containsKey(key)) {
a = theMap.get(key);
a.doStuff();
} else {
a.doOtherStuff();
}
theMap.put(key, a);
}
最后,我想将theMap作为ThatType ** 的集合返回,而不是 **ThisType。
这就是链条断裂的地方。使用注释行(第一行)进行声明会在散列的put()和get()方法上出现类型不匹配错误。
不确定这是否重要——但是,我将结果返回为LinkedHashSet< ThatType >。我正在进行从LinkedHashMap到LinkedHashSet的转换。但是,对于映射或集合中的集合值的多态引用,没有任何效果。到目前为止,我在所有这些操作中使用的所有且唯一的类型是ThisType。ThatType几乎在我尝试过的任何地方都给了我一些错误。