java8 collection.spliterator()_Java 8:接口中的Spliterator,Iterator,Collection和“default”实现(名为spliterator的...

Java 1.8.0_25发布到野外之后,有一个有趣的情况…我相信我的问题的根源主要是与Interfaces中的“默认”实现的新功能(至1.8)相关.

我正在开展的应用程序目前的目标是1.7,到目前为止,工作良好.直到用户开始更新到1.8.现在我们的用户已经开始更新到1.8,我们的手被迫转为1.8支持.

我们修复了大多数问题(主要涉及到1.7和1.8之间的JavaFX软件包的更改),但仍有一个令人烦恼的问题.

在我的智慧或缺乏的情况下,我之前决定创建一个SortedList< T>其从AbstractList< T>延伸.直到现在,这个类工作正常,但是在1.8运行时运行时,我得到:

Duplicate methods named spliterator with the parameters () and () are inherited

from the types Collection and Iterable

对我来说,这似乎是由AbstractList< T>实现的一些接口中的“默认”实现引起的. (我的SortedList< T>类不实现除Serializable之外的任何附加接口).实现Serializable是我们的另一个问题,因为我们需要支持SortedList< T>的反序列化对象,没有办法!).

我可以通过在SortedList< T>中提供spliterator()的覆盖实现来摆脱错误.类.但是,如果这是构建的,它不再在Java 1.7环境中运行.如果我尝试使用SortedList< T>有一个1.7运行时,我得到:

Problem:

Error: Unresolved compilation problems:

The import java.util.Spliterator cannot be resolved

Spliterator cannot be resolved to a type

com.xxxx.xxxx.util.SortedList.(SortedList.java:13)

这个错误很明显,因为我们现在已经在SortedList< T>中覆盖了spliterator()方法.它需要包括java.util.Spliterator,但在1.7中不存在.

理想情况下,如果不想要,我们不要求我们的客户更新到Java 1.8.

我们的手被迫在这里吗?我们是否需要强制将用户更新为1.8,并向自己更新为1.8的用户推出新版本?

有人知道这个问题吗?

在一个更哲学的笔记上,为什么接口被破坏与实现:-(可能是一个漂亮的新功能,但他们真的应该避免做任何会导致破坏现有代码的变化,特别是在一些如此重要的列表/收藏等

对这种困境的任何帮助或建议将不胜感激.

干杯,

标记

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值