gpt4 book ai didi

java - 如何覆盖所有枚举类的 toString() 方法?

转载 作者:搜寻专家 更新时间:2023-11-01 01:25:40 26 4
gpt4 key购买 nike

是否可以为所有 Enum 类覆盖方法 toString,而不是仅在枚举类中覆盖它。示例:

硬币.java:

enum Coins { PENNY(1), POUND(100), NOTE(500); 

private int value;

Coins(int coinValue) {
value = coinValue;
}
[...] // Other code

public String toString() {
return name().charAt(0) + name().substring(1).toLowerCase();
}
}

DaysOfWeek.java:

enum DaysOfWeek { MONDAY(1), TUESDAY(2), WEDNESDAY(3);

private int dayID;

DaysOfWeek(int ID) {
dayID = ID;
}
[...] // Other code

public String toString() {
return name().charAt(0) + name().substring(1).toLowerCase();
}
}

目前,我必须在每个枚举类中覆盖 toString()。我可以创建一个通用的 toString 方法来覆盖所有枚举类型的类,而无需在每个枚举类型类中实际编写 toString 吗?

最佳答案

没有。您不能覆盖系统的 Enum 类,也不能创建一个子类,您的所有 Enum 都继承自该子类 a language featurea lot of special rules .但是,您可以创建一个静态辅助方法:

public class Utils {
public static String toEnumString(Enum<?> inputEnum) {
return inputEnum.name().charAt(0) + inputEnum.name().substring(1).toLowerCase();
}
}

这可以以两种不同的方式使用:

  1. 您仍然可以在您的枚举中覆盖 toString(),但复制粘贴错误的可能性要小得多,并且每个人都可以通过一次代码更改来更改它。例如

    enum Coins { PENNY(1), POUND(100), NOTE(500); 

    // snip
    public String toString() {
    return Utils.toEnumString(this);
    }
    }
  2. 您可以在其他方法中使用它,例如:

    System.out.println(Utils.toEnumString(Coins.PENNY));
    preparedStatement.setString(1, Utils.toEnumString(Coins.POUND));

如果您想将另一个库添加到您的项目中,您也可以使用 Apache Commons 或 Google Guava 来做同样的事情:

关于java - 如何覆盖所有枚举类的 toString() 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31946098/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com