在比较函数

时间:2016-05-11 02:08:40

标签: java enums

我无法将Enum值与函数中的预定义值进行比较 我有一个枚举设置为

public enum SomeEnum {
    A, B, C
}

然后在另一个课程中,我有一个方法可以将String与Enum值进行比较,根据{{返回枚举值 equals 1}} Enum值的方法。

方法

toString()

上面的代码给出了一个错误说明:

  

变量letterType可能尚未初始化

足够公平,只是实例化它!...

 /**
 * Example
 * @param someString - A string which could be equivalent to an SomeEnum value.
 * @return SomeEnum Type
 */
private static ClassA someMethod(String someString) {
    SomeEnum letterType; // Problem
    for (SomeEnum letter : SomeEnum.values()) {
        if (someString.equals(letter.toString())) {
            letterType = letter;
        }
    }
    return letterType;
}

然而枚举(根据定义)无法实例化。

这给我留下了两个选择:

  1. 首次使用时SomeEnum letterType = new SomeEnum(); // NO 初始化letterType
  2. 通过指定if

    来初始化letterType
    null
  3. <小时/> 选项1 限制我返回/*Options*/ //1. if (someString.equals(letter.toString())){ SomeEnum letterType = letter; } //2. private static ClassA someMethod(String someString) { SomeEnum letterType = null; //... } ,因为它现在无法访问。
    选项2 有效,但是使用letterType实例化似乎良好做法 - 如果我错了,请纠正我。

    除了使用null语句并更改功能外,似乎我只能使用选项2实现此功能。

    还有另一种方法来实现这个目标吗?/缺少一些简单的东西......?
    我对这个概念的理解不正确吗?
    我应该只使用switch语句吗?

0 个答案:

没有答案