java - 类 StatusCode 扩展 Enum<StatusCode>

标签 java generics inheritance enums

public abstract class Enum<E extends Enum<E>>
    implements Comparable<E>, Serializable


class StatusCode extends Enum<StatusCode>

在java中,每个枚举都是Enum类的子类。我想将 Enum 类继承到我的自定义类“StatusCode”中。我尝试做同样的事情,但编译器抛出错误。详情如下

The type StatusCode may not subclass Enum<StatusCode> explicitly
    - Bound mismatch: The type StatusCode is not a valid substitute for the bounded parameter <E extends 
     Enum<E>> of the type Enum<E>

如果我无法显式扩展 Enum 类,为什么不呢?这不是最终类,什么确保枚举类无法扩展?

最佳答案

错误消息说得很清楚:

The type StatusCode may not subclass Enum<StatusCode> explicitly.

您需要做的只是创建一个 enum类型:

enum StatusCode { ONE, TWO; }

有了这个enum ,编译器确保它扩展 Enum<StatusCode>你不必担心它。

您可以通过运行此测试片段来验证这是真的:

StatusCode statusCode = StatusCode.ONE;
System.out.println(statusCode instanceof Enum);

请注意 instanceof运算符不需要 Enum 的类型参数,您可以通过查看 this thread 了解更多信息。 .

关于java - 类 StatusCode 扩展 Enum<StatusCode>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32985068/

相关文章:

C++纯虚类问题

C++在多态子类中添加虚方法

java - 为什么没有收到另一个http请求?

java - 无法构造 java.util.LinkedHashMap : no String-argument constructor/factory 的实例

java - 如何使用Java正则表达式匹配既不包含A也不包含B的字符串?

java - 退回这个有什么问题?

Swift - 继承协议(protocol)和将 Self 约束到协议(protocol)之间的区别

java - 使用泛型创建返回较大值的 max 函数

c# - 列表<T> 或 IList<T>

c++ - 在 C++ 中继承 C 结构并将其传递回 C 库是否安全?