创建字符串枚举的最好方法

2022-09-09 13:09:47

问题:创建字符串枚举的最好方法

用一个枚举类型去表示一组字符串的最好方法是什么

我尝试这样:

enum Strings{
   STRING_ONE("ONE"), STRING_TWO("TWO")
}

我怎么样才可以像使用字符串那样使用它们?

回答一

我不知道你想干嘛,但是我可以转换你的样例代码为:

package test;

/**
 * @author The Elite Gentleman
 *
 */
public enum Strings {
    STRING_ONE("ONE"),
    STRING_TWO("TWO")
    ;

    private final String text;

    /**
     * @param text
     */
    Strings(final String text) {
        this.text = text;
    }

    /* (non-Javadoc)
     * @see java.lang.Enum#toString()
     */
    @Override
    public String toString() {
        return text;
    }
}

或者,你可以写个getter方法去获取文本

你可以使用Strings.STRING_ONE.toString();

回答二

使用name() 方法生产ONE

public class Main {
    public static void main(String[] args) throws Exception {
        System.out.println(Strings.ONE.name());
    }
}

enum Strings {
    ONE, TWO, THREE
}

回答三

你可以这样使用字符串枚举

public enum EnumTest {
    NAME_ONE("Name 1"),
    NAME_TWO("Name 2");

    private final String name;

    /**
     * @param name
     */
    private EnumTest(final String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

并且在主函数里面调用

public class Test {
    public static void main (String args[]){
        System.out.println(EnumTest.NAME_ONE.getName());
        System.out.println(EnumTest.NAME_TWO.getName());
    }
}

回答四

你可以直接把枚举的名称设置得和你相要的那个字符串相同,或者,更加通常来说,你可以将任何属性和你的枚举值关联起来

enum Strings {
   STRING_ONE("ONE"), STRING_TWO("TWO");
   private final String stringValue;
   Strings(final String s) { stringValue = s; }
   public String toString() { return stringValue; }
   // further methods, attributes, etc.
}

将常量放在底部,而方法和属性放在下面是很重要的。

回答五

用缺省值进行get和set

public enum Status {

    STATUS_A("Status A"),  STATUS_B("Status B"),

    private String status;

    Status(String status) {
        this.status = status;
    }

    public String getStatus() {
        return status;
    }
}

文章翻译自Stack Overflow:https://stackoverflow.com/questions/3978654/best-way-to-create-enum-of-strings

  • 作者:Gogo-2020
  • 原文链接:https://blog.csdn.net/weixin_44560620/article/details/116753525
    更新时间:2022-09-09 13:09:47