Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 返回枚举类_Java_Templates_Enums - Fatal编程技术网

Java 返回枚举类

Java 返回枚举类,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

我有一个类,其中有许多私有枚举。 在启动器中,我将许多参数作为字符串传递,并为每个参数调用函数将其转换为适当的值。例如,如果成员是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。它与模板有什么关系吗?

ENUM1和ENUM2是不同的类;它们都扩展了java.lang.Enum。您可以编写一个将枚举作为参数的方法,并将其中任何一个传递给该方法。要实现您所说的,您必须使用instanceof来确定传入了哪个类,以便对它执行任何特定的操作

我没有尝试过这种方法,但您可能可以使用常规枚举方法在字符串和枚举之间进行转换,只要字符串匹配或声明这些枚举等效。请参阅枚举方法toString()和valueOf()以查看它们是否适合您


您还可以有两个方法,一个采用ENUM1,另一个采用ENUM2;他们无论如何也无法共享太多代码。

您不能直接使用枚举吗?(对于其他类型也一样,不需要对所有内容进行字符串化)。
value.toUpperCase()=“TRUE”
。还
返回条件?真:假
可简化为
返回条件
最初我是这样做的,但是值可能是null(我正在与数据库通信),所以我想在函数中处理null情况,问题是什么?回来吧。您面临什么问题?@AndreasAndreou测试此代码
“foo.toUpperCase()==”foo.toUpperCase()
。对于对象,
=
检查引用是否指向相同的实例(相同的对象),而不是对象是否具有相同的状态,但每次调用
toUpperCase()
时,您都在创建新的(单独的)字符串实例,因此即使它们包含相同的信息,它们也存储在内存中的不同位置。换句话说,
==
测试身份,而不是状态。