我对此有点迷失。我有代码(我没有编写),其中有一个名为 BitSetExt 的类,它扩展了 BitSet。签名看起来像:
private class BitSetExt extends BitSet implements Set<Integer>
Stream() 方法在扩展类中未被重写。我确实知道代码在 Java 1.6 上编译得很好。在使用 Java8 的 Eclipse 中,我收到错误:
返回类型与继承的方法 Collection.stream()、BitSet.stream() 不兼容。
如果我尝试重写stream()并将IntStream返回类型更改为任何内容,我会收到不同的错误并建议将返回类型更改为IntStream(这显然不兼容)。那么,我不明白什么以及如何修复此代码?
谢谢你的帮助。
从 Java 8 开始,BitSet 有一个方法声明为
IntStream stream()
and Set<Integer>
有一个同名的方法,声明为
Stream<Integer> stream()
由于这些方法具有相同的名称但返回类型不兼容,因此不可能同时扩展 BitSet 和实现 Set。
您必须重构该类,使其无法实现Set<Integer>
不再,例如,添加一个返回a的方法view在对象之上,实现Set<Integer>
:
public Set<Integer> asSet();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)