java 创建字符串枚举的最佳方法?

wn9m85ua  于 2023-05-05  发布在  Java
关注(0)|答案(8)|浏览(159)

enum类型表示一组字符串的最佳方法是什么?
我试过这个:

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

如何将它们用作Strings

cunj1qz1

cunj1qz11#

我不知道你想做什么,但这是我实际上如何翻译你的示例代码。

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;
    }
}

或者,您可以为text创建一个getter方法。
现在可以执行Strings.STRING_ONE.toString();

rpppsulh

rpppsulh2#

Enum自定义字符串值

http://javahowto.blogspot.com/2006/10/custom-string-values-for-enum.html
java enum的默认字符串值是它的面值,或元素名称。但是,您可以通过重写toString()方法来自定义字符串值。比如说

public enum MyType {
  ONE {
      public String toString() {
          return "this is one";
      }
  },

  TWO {
      public String toString() {
          return "this is two";
      }
  }
}

运行以下测试代码将产生以下结果:

public class EnumTest {
  public static void main(String[] args) {
      System.out.println(MyType.ONE);
      System.out.println(MyType.TWO);
  }
}

this is one
this is two
ctrmrzij

ctrmrzij3#

使用name()方法:

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

enum Strings {
    ONE, TWO, THREE
}

得到ONE

mzsu5hc0

mzsu5hc04#

将枚举名称设置为与所需的字符串相同,或者更一般地,您可以将任意属性与枚举值相关联:

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.
}

常量在顶部,方法/属性在底部是很重要的。

bkkx9g8r

bkkx9g8r5#

根据您所说的“将它们用作字符串”的含义,您可能不希望在这里使用枚举。在大多数情况下,The Elite Gentleman提出的解决方案将允许您通过他们的toString方法使用它们,例如。在System.out.println(STRING_ONE)String s = "Hello "+STRING_TWO中,但是当你真的需要字符串时(例如STRING_ONE.toLowerCase()),您可能更喜欢将它们定义为常量:

public interface Strings{
  public static final String STRING_ONE = "ONE";
  public static final String STRING_TWO = "TWO";      
}
lb3vh1jj

lb3vh1jj6#

可以将其用于字符串枚举

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;
    }
}

并从main方法调用

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

83qze16e7#

如果你不想使用构造函数,并且你想为方法取一个特殊的名字,可以这样尝试:

public enum MyType {
  ONE {
      public String getDescription() {
          return "this is one";
      }
  },    
  TWO {
      public String getDescription() {
          return "this is two";
      }
  };

  public abstract String getDescription();
}

我想这是最快的解决办法。不需要使用变量final

gkn4icbw

gkn4icbw8#

获取并设置默认值。

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;
  }
}

相关问题