我正在开发一个 Java 库,我需要创建一个返回 Set<A>
的方法。 ,其中A
是一个接口(interface)并且 B implements A
。所以我尝试实例化该集合,如下所示:
Set<A> setOfA = new HashSet<B>();
出现以下错误:
Type mismatch: cannot convert from HashSet<B> to Set<A>
但是,当不使用集合并返回 B
时在一个期望 A
的函数中作为返回类型,一切都正常,因此接口(interface)与其具体类之间的关系也正常,问题出在集合(本例中为 HashSet)。我怎样才能避免这种情况?提前致谢。
最佳答案
你只能这样做:
Set<A> setOfA = new HashSet<>();
这是一个简短的方法:
Set<A> setOfA = new HashSet<A>();
因此,当您需要使用 B 中的特殊方法时,只需像这样进行强制转换(如果您确定该对象确实是 B 的实例)
B b = (B) setofA.get(....);
你可以阅读非常好的教程here 。祝你好运
关于Java 接口(interface)及其在集合中的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40982764/