【发布时间】:2014-12-16 07:04:54
【问题描述】:
在 Java 1.8.0_25 发布后遇到了一个有趣的情况......我相信我的问题的根源主要与接口中“默认”实现的新(到 1.8)特性有关。
我正在开发的应用程序目前的目标是 1.7,到目前为止它运行良好。直到用户开始更新到 1.8。现在我们的用户已经开始更新到 1.8,我们不得不在某种程度上转向支持 1.8。
我们已经修复了大部分问题(主要与 1.7 和 1.8 之间 JavaFX 包的更改有关),但还有一个令人头疼的问题。
根据我的智慧,或者缺乏智慧,我不久前决定创建一个从 AbstractList
Duplicate methods named spliterator with the parameters () and () are inherited
from the types Collection<T> and Iterable<T>
在我看来,这似乎是由 AbstractList
我可以通过在我的 SortedList
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.<init>(SortedList.java:13)
这个错误非常明显,因为我们现在覆盖了 SortedList
理想情况下,如果客户不愿意,我们不希望他们更新到 Java 1.8。
我们的手是不是被强制到这里了?我们是否需要强制用户更新到 1.8 并且还向任何自己更新到 1.8 的用户推出新版本?
有人知道解决这个问题的方法吗?
从更哲学的角度来说,为什么接口被实现破坏了:-(。可能是一个漂亮的新功能,但他们确实应该避免做任何会导致对现有代码进行破坏性更改的事情,尤其是在这样的事情上基本的列表/集合等。
任何有关此困境的帮助或建议将不胜感激。
干杯,
标记
【问题讨论】:
-
自从
Collection<T>extendsIterable<T>应该永远不会出现这样的“重复方法”错误。这是一个损坏的编译器的指标。请记住you need a Java 8 aware compiler when using the Java 8 classes even if you are not using Java 8 source/target level. -
嗯,以为我们已经解决了所有这些问题,将不得不三重检查并重试。感谢您的建议。
标签: interface java-8 backwards-compatibility spliterator