Java枚举继承:是否有可能以某种方式将枚举'toString()方法提取到公共超类/枚举?

时间:2011-07-29 15:09:07

标签: java inheritance enums

我有4个不同的类,它们有一个名为WebService的公共超类,每个类都有以下枚举声明的枚举(具有不同的值):

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()方法提取到公共超类/枚举?现在,我必须为每个枚举复制toString()8次...

3 个答案:

答案 0 :(得分:2)

正如其他人所说,你不能让枚举从公共类继承。如果你正在做一些比你在示例代码中显示的更复杂的东西,那么你可以使用某种辅助函数,这个函数在某个地方是静态的,它接受枚举并进行计算。枚举可以实现一个接口,因此您可以通过这种方式处理复杂的常见toStrings。

答案 1 :(得分:1)

枚举是最终的,也不能从任何东西继承,所以没有。您可以做的最好是覆盖toString()并委托给一个常见的“to-stringer”实现,这样您就不必一遍又一遍地编写实际的实现。

答案 2 :(得分:0)

由于enum没有可用的继承模型,因此无法从enum类扩展任何内容,因此...

相关问题