我已经从使用常量字符串切换到使用枚举.很多时候我需要String枚举的表示(用于记录,传递给需要String等的API 等).
使用String常量,您只需传递String值,但需要调用枚举toString().有没有办法在提供枚举变量时"默认"为String值?
正如许多海报所评论的那样,如果你经常需要String代表,也许不应该使用枚举.
您应该首先完全采用enum而不是使用该String表示.仅使用toString()生成消息,日志等,但在内部您需要使用enum.任何Map,Set等操作应在完成enum类型,保证正确的系列化,单件模式,和其他一切enum类型都应该有.
在你的片段中:
Object o = map.get(Options.OPTION_1);
//This won't work as intended if the Map key is a String
Run Code Online (Sandbox Code Playgroud)
除了编译时错误之外,你应该真正质疑地图键是否应该首先是类型String.你使用它的方式,它看起来应该是一个Map<Options, Something>.
Enum在Java中使用有很多很好的理由.但如果你只需要一个,那就不行了String.
例如,如果您要表示一组特定的实体,并且不希望它们与其他类型的事物(如Strings)等效,则Enum适合.此外,如果您要调用操作它们的函数并根据特定实例进行区分.
另一方面,如果你只对String某事物的价值感兴趣,那么String常数就没有错.
根据您发布的内容,我无法确定用例是什么.你有什么理由需要在Enum这里使用吗?