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

标签 java collections interface

我正在开发一个 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/

相关文章:

java - 在 Javafx 上,有没有办法在不知道所有点的坐标(但只知道边数?)的情况下绘制正多边形?

java - 如果使用 ORM 框架,请设置外键

java - 如何在线性布局中动态创建框架布局并使用其他xml文件

java - Hibernate:为什么 SET 对于 *to many 关系优于 List

.net - 如何最优雅地遍历 C# 中的并行集合?

java - Java中的接口(interface)优势

c# - C# 中的集合初始化器

c# - 能不能提供。 NET Collection 根据查找时间排序的顺序列表?

c# - Interface 是否在继承链中?

java - 在接口(interface)中创建两个通用参数