我正在开发一个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。我怎么能避免这个?提前谢谢。
答案 0 :(得分:1)
你可以这样做:
Set<A> setOfA = new HashSet<>();
这是一个简短的方法:
Set<A> setOfA = new HashSet<A>();
所以,你需要使用B中的特殊方法,只需像这样进行投射(如果你确定,这个对象实际上是B的实例)
B b = (B) setofA.get(....);
你可以阅读相当不错的教程here。祝你好运