Java 返回枚举类
我有一个类,其中有许多私有枚举。 在启动器中,我将许多参数作为字符串传递,并为每个参数调用函数将其转换为适当的值。例如,如果成员是Double,我将调用我编写的一个函数,该函数调用Double.value(String str)并返回它,或nullJava 返回枚举类,java,templates,enums,Java,Templates,Enums,我有一个类,其中有许多私有枚举。 在启动器中,我将许多参数作为字符串传递,并为每个参数调用函数将其转换为适当的值。例如,如果成员是Double,我将调用我编写的一个函数,该函数调用Double.value(String str)并返回它,或null public Boolean stringToBool(String value) { return ( value.toUpperCase() == "TRUE" ) ? true : false; } public Double str
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。它与模板有什么关系吗?ENUM1和ENUM2是不同的类;它们都扩展了java.lang.Enum。您可以编写一个将枚举作为参数的方法,并将其中任何一个传递给该方法。要实现您所说的,您必须使用instanceof来确定传入了哪个类,以便对它执行任何特定的操作 我没有尝试过这种方法,但您可能可以使用常规枚举方法在字符串和枚举之间进行转换,只要字符串匹配或声明这些枚举等效。请参阅枚举方法toString()和valueOf()以查看它们是否适合您
您还可以有两个方法,一个采用ENUM1,另一个采用ENUM2;他们无论如何也无法共享太多代码。您不能直接使用枚举吗?(对于其他类型也一样,不需要对所有内容进行字符串化)。
value.toUpperCase()=“TRUE”
。还返回条件?真:假
可简化为返回条件
最初我是这样做的,但是值可能是null(我正在与数据库通信),所以我想在函数中处理null情况,问题是什么?回来吧。您面临什么问题?@AndreasAndreou测试此代码“foo.toUpperCase()==”foo.toUpperCase()
。对于对象,=
检查引用是否指向相同的实例(相同的对象),而不是对象是否具有相同的状态,但每次调用toUpperCase()
时,您都在创建新的(单独的)字符串实例,因此即使它们包含相同的信息,它们也存储在内存中的不同位置。换句话说,==
测试身份,而不是状态。