我有一个课程,其中有许多私人Enums。 在启动器中,我将一些参数作为字符串传递,并为每个参数调用一个函数将其转换为approriate值。例如,如果成员是Double,我将调用我编写的函数,调用Double.value(String str)并返回它,或者为null。
public Boolean stringToBool(String value)
{
return ( value.toUpperCase() == "TRUE" ) ? true : false;
}
public Double stringToDouble(String value)
{
return ( value == null ) ? null : Double.valueOf(value);
}
我的问题涉及到枚举。我再次调用一个函数,我编写的函数传递字符串中的值,如果成员与枚举相关联,则调用类。如何返回某个枚举?我能这样做吗?或者我只是将它转换为构造函数?
public class MyClass
{
private enum ENUM1 {
HIGH,
MED,
LOW
}
private enum ENUM2 {
DIFFICULT,
MODERATE,
EASILY
}
private Integer id;
private String designSpec;
private Double maxThickness;
private ENUM1 enum1;
private Boolean springs;
private ENUM2 enum2;
public Alloy()
{
}
public Alloy(String designSpec,
String maxThickness,
String enum1, String enum2, String springs)
{
this.designSpec = designSpec;
this.maxThickness = stringToDouble(maxThickness);
this.enum1 = stringToEnum(ENUM1.class, enum1);
this.enum2= stringToEnum(ENUM2.class, enum2);
this.springs = stringToBool(springs);
}
public Boolean stringToBool(String value)
{
return ( value.toUpperCase() == "TRUE" ) ? true : false;
}
public Double stringToDouble(String value)
{
return ( value == null ) ? null : Double.valueOf(value);
}
public Enum stringToEnum(Class enumType, String value)
{
return ( value == null ) ? null : Enum.valueOf(enumType, value);
}
我的班级是这样的。我想知道stringToEnum是否可以仅使用该函数返回ENUM1或ENUM2。是否必须对模板做任何事情?
答案 0 :(得分:0)
ENUM1和ENUM2是不同的类别;它们都扩展了java.lang.Enum。您可以编写一个将Enum作为参数的方法,并将它们中的任何一个传递给该方法。要做你正在谈论的事情,你必须使用instanceof来确定传入哪个类,以便做任何特定的事情。
我还没试过这个,但你可以使用通用枚举方法在字符串和枚举之间进行转换,只要字符串匹配或声明等效于这些枚举。请参阅enum方法toString()和valueOf()以查看它们是否适合您。
您还可以使用2个方法,一个使用ENUM1,另一个采用ENUM2;他们无论如何也无法分享代码。