【问题标题】:Add date with special character in enum在枚举中添加带有特殊字符的日期
【发布时间】:2017-08-16 07:39:29
【问题描述】:

我尝试用这样的特殊字符枚举日期:

public enum Myenum implements enumTypes
{
    TO, '2015-01', '2015-02'
}

但是我得到了一个错误: Invalid character constant2015-012015-02 中。

我想知道如何用特殊字符枚举。

【问题讨论】:

  • 提示:对于类型来说,“TO”是什么并不重要......这不是字符:'2015-01'
  • @robjwilkins TO 是一个字符串,但我的日期有问题。我试图把它作为字符串放在 " " 但同样的问题
  • 你不能。枚举名称必须是有效的 Java 标识符。因此,它们不能以引号开头,也不能以数字开头。
  • @JBNizet 我可以枚举名称。我对TO 没有问题,但它是针对2015-01 的。这是一个字符串,但我收到特殊字符错误
  • 再次阅读我的评论。并阅读马克的答案。枚举名称不是字符串(顺便说一句,字符串文字在 Java 中用双引号括起来)。它们必须是有效的 Java 标识符。不是任意字符串。有效的 Java 标识符。就像字段名称一样。它们字段名称,顺便说一句。例如,正确的名称应该是 JANUARY_2015。

标签: java enums


【解决方案1】:

你不能。 Java 枚举值必须遵循Java Language Specification version 8, section 3.8 Identifiers 中描述的 Java 标识符规则:

标识符是 Java 字母和 Java 的无限长度序列 数字,其中第一个必须是 Java 字母。

Identifier:
   IdentifierChars but not a Keyword or BooleanLiteral or NullLiteral
IdentifierChars:
   JavaLetter {JavaLetterOrDigit}
JavaLetter:
   any Unicode character that is a "Java letter"
JavaLetterOrDigit:
   any Unicode character that is a "Java letter-or-digit"

这意味着不允许使用单引号 (') 或减号 (-)(以及许多其他不是字母或数字的字符),标识符也不能以数字开头。

【讨论】:

  • @MAYA 双引号或标识符中也不允许使用,因为它们既不是字母也不是数字
猜你喜欢
  • 1970-01-01
  • 2022-01-19
  • 2012-05-11
  • 1970-01-01
  • 1970-01-01
  • 2021-04-28
  • 2020-07-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多