Java - 如何在枚举中添加特殊字符?

8

我这里有一个问题。我创建了SpecialCharacterField.java - 一个枚举类,列出一些特殊字符。

package bp.enumfield;

public enum SpecialCharacterField {
   +, #;
}

在我的Eclipse代码中,有这样一行:public enum SpecialCharacterField{,但是它报错了,错误信息如下:Syntax error, insert "EnumBody" to complete EnumDeclaration

请帮忙解决一下。谢谢!


2
你不能这样做。看一下这个链接:http://www.coderanch.com/t/515142/java/java/Including-sign-Enum - vikiiii
你可能也想看一下我的答案。它与当前“已接受”的答案在一个重要的方面不同。 - Bohemian
3个回答

11

做类似这样的事情,

public enum SpecialCharacterField{
   PLUS("+"),
   HASH("#");

   private String value;
   private SpecialCharacterField(String value)
   {
      this.value = value;
   }

   public String toString()
   {
      return this.value; //This will return , # or +
   }
}

你以十秒的优势打败了我,使用几乎完全相同的代码写作。 :-) - Wyzard
4
@Lion,在我写的并因为重复而删除的答案中。 - Wyzard
这不是一个好的解决方案,而且注释是错误的 - toString 不会返回 HASH 等内容,它会返回 "#" - Bohemian

5

这些字符不能作为Java语言中标识符的一部分。请注意,JVM本身没有施加任何限制(只有./;和[被阻止),因此如果您直接编写字节码,则可以使用此类名称。但是,这通常不是一个理想的方法。


3

枚举类型就像普通类一样可以有字段和获取器。

public enum SpecialCharacterField{
   Plus('+'),
   Hash('#');

   private final char character;
   private SpecialCharacterField(char character) {
      this.character = character;
   }

   public char getCharacter() {
      return character;
   }
}

注意:避免覆盖toString()方法——这是一种反模式:toString()方法只适用于“人类眼睛”,不能在代码中依赖它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接