加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 如何确保集合仅包含接口的每个实现之一

发布时间:2020-12-15 04:26:12 所属栏目:Java 来源:网络整理
导读:我有一个具有大量实现的接口MyInterface和一个Collection Collection MyInterface. 现在我如何确保此Collection中没有两个元素属于同一类型? 我怎样才能防止任何条目被覆盖? 意味着在任何给定的时间点只有集合中每个实现的1个实例. 出于显而易见的原因,我
我有一个具有大量实现的接口MyInterface和一个Collection Collection< MyInterface>.

现在我如何确保此Collection中没有两个元素属于同一类型?

我怎样才能防止任何条目被覆盖?

意味着在任何给定的时间点只有集合中每个实现的1个实例.

出于显而易见的原因,我无法向接口添加默认的equals(Object obj)实现.
我也不能以任何方式保证每个实现都覆盖equals(Object obj)方法(显而易见但是为了彻底性而在这里).

我目前看到的唯一方法是创建一个抽象类MyAbstractClass.但这似乎有点矫枉过正(?)

解决方法

您可以使用Map< Class<?&gt ;,MyInterface>而不是集合< MyInterface>.关键是实施类.这将确保每种类型的最多一个实例可以添加到Map中.

以下是如何初始化地图并向其添加条目而不覆盖现有条目:

Map<Class<?>,MyInterface> map = new HashMap<>();
...
if (!map.containsKey(obj.getClass())) {
    map.put(obj.getClass(),obj);
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读