如何实现具有枚举的接口,其中接口扩展为Comparable?
考虑以下代码:
public interface Foo extends Comparable {} public enum FooImpl implements Foo {}
由于类型擦除的限制,我收到以下错误:
java.lang.Comparable不能使用不同的参数inheritance:
和
我有以下要求:
-
FooImpl
需要是一个枚举,因为我需要将它用作注释中的默认值。 - 我的界面合同是它需要具有可比性。
我已经尝试在接口中使用generics边界,但Java不支持。
枚举实现Comparable,因此FooImpl最终使用不兼容的参数扩展Comparable两次。
以下将有效:
public interface Foo> extends Comparable { ... } public enum FooImpl implements Foo { ... }
枚举已实现可比性,因此您无法覆盖它。
关于为什么 – 实现 – 实现 – 接口的一般答案。
实际上你会得到的错误是:
接口Comparable不能使用不同的参数多次实现:
Comparable
和Comparable
由于枚举FooImpl
已经隐式实现了Comparable
,因此不能再将其重写为Comparable