Java 枚举继承 : Is it possible to somehow extract the enums' toString() method to a common super class/enum?

标签 java inheritance enums

我有 4 个不同的类,它们都有一个名为 WebService 的通用父类(super class),每个类都声明了以下枚举(具有不同的值):

public class GeoPlacesService extends WebService {

public enum RequestParam {
    LOCATION, RADIUS, SENSOR, KEY;

    @Override
    public String toString() {
       return super.toString().toLowerCase();
    }
}

public enum ResponseParam {
    STATUS, LATITUDE, LONGITUDE, NAME;

    @Override
    public String toString() {
       return super.toString().toLowerCase();
    }
}
}

是否有可能以某种方式将枚举的 toString() 方法提取到通用父类(super class)/枚举中?现在,我必须为每个枚举复制 toString() 8 次...

最佳答案

正如其他人所指出的,您不能让枚举从公共(public)类继承。如果您正在做的事情比您在示例代码中显示的更复杂,那么您可以在某个地方使用某种静态的辅助函数来接收枚举并进行计算。枚举可以实现一个接口(interface),因此您可以通过这种方式潜在地处理复杂的通用 toString。

关于Java 枚举继承 : Is it possible to somehow extract the enums' toString() method to a common super class/enum?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6875196/

相关文章:

python - 导出 32 位枚举时 Boost Python 1.48 失败

objective-c - 如何将这个枚举从 objective-c 翻译成 swift?

java - 如何在Hadoop Mapreduce中比较来自同一文件的数据?

java - 如何通过批处理脚本下载JRE包

c++ - CRTP 和复制/移动赋值/构造函数继承

Javascript - 在构造函数中使用左侧赋值更改对象

c++ - 如何在多态性中为指定类型分配内存?

c++ - 如何从 C++ 中的枚举类打印出字符串?

java - Struts2 FilterDispatcher 和 StrutsPrepareAndExecuteFilter 有什么区别?

java - 我应该用什么替换 sun.awt.shell.ShellFolder 这样我就不会收到编译警告?