返回枚举类

时间:2014-11-29 16:05:25

标签: java templates enums

我有一个课程,其中有许多私人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。是否必须对模板做任何事情?

1 个答案:

答案 0 :(得分:0)

ENUM1和ENUM2是不同的类别;它们都扩展了java.lang.Enum。您可以编写一个将Enum作为参数的方法,并将它们中的任何一个传递给该方法。要做你正在谈论的事情,你必须使用instanceof来确定传入哪个类,以便做任何特定的事情。

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

您还可以使用2个方法,一个使用ENUM1,另一个采用ENUM2;他们无论如何也无法分享代码。