是否可以在枚举中转义":"冒号字符?

It *_*unt 0 java enums

是否有一种解决方法可以使用冒号作为枚举中的键?

public enum foo {
   _DEFAULT_GET("com.foo.my.package");   // works fine
   _PREFIX_GET("com.foo.my.other.package");
   _PRE:CODE_GET("com.foo.yet.another.package");  // <-- how do I escape this colon?
}
Run Code Online (Sandbox Code Playgroud)

编辑:在我被遗忘之前,我想补充说,有一个传递的命名约定更改.它在团队中引起了非常有趣的争论!:-)

rap*_*ura 7

不,:不是Java标识符中的合法字符.

合法字符是az AZ,0-9,(the {unicode letters}),_和$

你正试图做同样的事情

private String he:llo; // not valid since : is a language construct, used in places such as labels
Run Code Online (Sandbox Code Playgroud)

此外,您的程序不应该依赖于您为字段指定的名称.除非你做反思; 你不应该那样,要么......

请注意,您不应该在标识符中使用$,因为它主要由代码生成器使用,例如javac在编译包含内部类$的类时用作分隔符.

正如@ Kevin.K所提到的,a-zA-Z实际上是unicode字母代码.

  • 我相信货币特征('$')也是合法的 (2认同)
  • 几乎任何Unicode字符实际上都是合法的,请参阅[this question](http://stackoverflow.com/questions/65475/valid-characters-in-a-java-class-name) (2认同)