枚举中的特殊字符

Con*_*uur 16 java enums

我想把特殊字符,括号('('和')')和撇号(')放在枚举中.

我有这个:

private enum specialChars{
   "(", ")", "'"
}
Run Code Online (Sandbox Code Playgroud)

但它不起作用.Java说了一些关于无效令牌的事情.我怎么解决这个问题?

Grtz me.eatCookie();

Hun*_*len 21

你可以这样做:

private enum SpecialChars{
   COMMA(","),
   APOSTROPHE("'"),
   OPEN_PAREN("("),
   CLOSE_PAREN(")");

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

   public String toString()
   {
      return this.value; //will return , or ' instead of COMMA or APOSTROPHE
   }
}
Run Code Online (Sandbox Code Playgroud)

使用示例:

public static void main(String[] args)
{
   String line = //..read a line from STDIN

   //check for special characters 
   if(line.equals(SpecialChars.COMMA)      
      || line.equals(SpecialChars.APOSTROPHE)
      || line.equals(SpecialChars.OPEN_PAREN) 
      || line.equals(SpecialChars.CLOSE_PAREN)
   ) {
        //do something for the special chars
   }
}
Run Code Online (Sandbox Code Playgroud)


das*_*ght 5

枚举常量必须是有效的Java标识符。toString如果您希望它们以不同的方式显示,则可以覆盖。

public enum SpecialChars {

    OPEN_PAREN {
        public String toString() {
            return "(";
        }
    },

    CLOSE_PAREN {
        public String toString() {
            return ")";
        }
    },

    QUOTE {
        public String toString() {
            return "'";
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

  • @EugeneKuleshov您将_supposed_覆盖您创建的每个类的toString()。 (4认同)