是否有一种解决方法可以使用冒号作为枚举中的键?
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)
编辑:在我被遗忘之前,我想补充说,有一个传递的命名约定更改.它在团队中引起了非常有趣的争论!:-)
不,:不是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字母代码.