当前位置: 首页 > 面试题库 >

如何实现带有枚举的接口,该接口扩展了Comparable?

鲜于子琪
2023-03-14
问题内容

考虑以下代码:

public interface Foo extends Comparable<Foo> {}

public enum FooImpl implements Foo {}

由于类型擦除的限制,我收到以下错误消息:

java.lang.Comparable的不能使用不同的参数继承:<Foo><FooImpl>

我有以下要求:

  • FooImpl 需要是一个枚举,因为我需要将其用作注释中的默认值。
  • 我的界面的约定是,它必须具有可比性。

我已经尝试在接口中使用通用范围,但是Java不支持此功能。


问题答案:

枚举实现Comparable,因此FooImpl最终使用不兼容的参数将Comparable扩展了两次。

以下将起作用:

public interface Foo<SelfType extends Foo<SelfType>> extends Comparable<SelfType> { ... }

public enum FooImpl implements Foo<FooImpl> { ... }


 类似资料:
  • 问题内容: 我有一个关于在接口中放置Java枚举的问题。为了使其更清楚,请参见以下代码: 我知道一个接口由带有 空主体 的方法组成。但是,我在这里使用的枚举需要一个构造函数和一个方法来获取关联的值。在此示例中,建议的接口将不仅包含空主体的方法。是否允许这种实现? 我不确定是否应该将枚举类放入接口或实现此接口的类中。 如果将枚举放入实现此接口的类中,则方法public Number getNumbe

  • 我有一个关于在接口中放置Java枚举的问题。为了更清楚,请看下面的代码: 我知道一个接口由带有空主体的方法组成。但是,我在这里使用的枚举需要一个构造函数和一个方法来获取关联的值。在本例中,所建议的接口将不仅仅由具有空主体的方法组成。允许这种实现吗?

  • 问题内容: 在Java中,当接口扩展另一个接口时: 为什么要实现其方法? 当接口不能包含方法主体时,如何实现其方法 当扩展另一个接口而不实现它时,如何实现这些方法? 接口实现另一个接口的目的是什么? 这是Java的主要概念! 编辑: 在eclipse中,除了中的实现方法之外,还有实现符号。 当我将鼠标悬停在它上面时,它表示它实现了该方法!!! 问题答案: 为什么要实现其方法?当接口不能包含方法主体

  • 问题内容: 我刚刚发现Java允许枚举实现接口。有什么好的用例? 问题答案: 枚举不仅仅代表被动集(例如颜色)。他们可以代表与功能更复杂的对象,所以你可能想进一步功能添加到这些是那么-例如,你可能如接口,等等。支持这些和组件。

  • 问题内容: 我必须实现一个RMI服务器,该服务器将成为其他两个RMI服务的前端。因此,我决定逻辑上要做的是使该接口实现其他两个服务的接口。 但是,StudentServer上有一种方法 我也想抛出一个错误,因为该服务还将在尝试添加详细信息之前验证该书是否确实存在。 这是可能的还是我的设计思想完全被取消了,实际上这是一个糟糕的设计思想,好像其他接口都已更改一样?而且,为里面的所有方法编写方法签名会更

  • 我有个Z接口。它是由Y类实现的。我有另一个继承类Y的类x。因为y实现了类z指定的契约,所以x做同样的事情,因为它扩展了类y。因此,它是否也应该实现接口Z?