Java接口及其在集合中的使用

时间:2016-12-05 20:29:35

标签: java collections interface

我正在开发一个Java库,我需要创建一个返回Set<A>的方法,其中A是一个接口和B implements A。所以我尝试实例化这样的集合:

Set<A> setOfA = new HashSet<B>();

收到以下错误:

Type mismatch: cannot convert from HashSet<B> to Set<A>

但是,如果不使用集合并在期望B作为返回类型的函数中返回A一切正常,那么接口与其具体类之间的关系是正确的,问题是有了集合,在这种情况下是HashSet。我怎么能避免这个?提前谢谢。

1 个答案:

答案 0 :(得分:1)

你可以这样做:

Set<A> setOfA = new HashSet<>();

这是一个简短的方法:

Set<A> setOfA = new HashSet<A>();

所以,你需要使用B中的特殊方法,只需像这样进行投射(如果你确定,这个对象实际上是B的实例)

B b = (B) setofA.get(....);

你可以阅读相当不错的教程here。祝你好运