我有一个基于Hibernate / Spring的Web应用程序,其中有几个枚举类型,我想在应用程序中使用它们。
public enum MerchantStatus {
NEW("New"),
...
private final String status;
MerchantStatus(String status) {
this.status = status;
}
public static MerchantStatus fromString(String status) {..}
public String toString() {..}
}
并且
public enum EmployerType {
COOL("Cool"),
...
private final String type;
EmployerType (String type) {
this.type = type;
}
public static EmployerType fromString(String type) {..}
public String toString() {..}
}
我希望创建一个转换器,将我的枚举对象转换为字符串并反之亦然。大致是这样的:
public class MerchantStatusConverter implements AttributeConverter<MerchantStatus, String> {
public String convertToDatabaseColumn(MerchantStatus value) {..}
public MerchantStatus convertToEntityAttribute(String value) {..}
}
问题在于我不想为每个枚举类型创建转换器,理想情况下应该是一个通用的类/接口,并且我将在这里使用多态。问题是
fromString
是静态方法,似乎不可能创建返回通用类型的静态方法。有没有解决这个问题的办法?
enumValue.name()
或enumValue.toString()
将枚举转换为字符串;使用YourEnumType.valueOf(string)
或Enum.valueOf(clazz, string)
将字符串转换为枚举)。内置的字符串表示形式就是枚举的确切写法,而在您的情况下是全大写,而您想要的是首字母大写,因此您可以进行一些简单的大小写转换。 - newacct