【发布时间】:2014-09-26 10:12:36
【问题描述】:
我正在为我正在构建的工具使用一些 Java 类,例如 javax.Mail.Session 和 MessageDigest。
我注意到为它们分配属性很困难,因为它们为此使用了String 常量。
例如,对于Session 对象,您必须在Property 实例中分配String 键值对,然后使用该实例创建Session。因此,如果您希望会话记录调试消息,请在 Property 实例中分配 "smtp.mail.debug"、"true"。同样,如果您希望您的MessageDigest 使用SHA,请将MessageDigest 实例创建为MessageDigest.getInstance("SHA")
如果说我想使用MD5 / RC4 等实现MessageDigest,或者向我的Session 对象添加另一个属性,我还没有弄清楚要做什么以及从哪里获取信息。
如果这些各自的类公开公共枚举来分配属性,那不是更好吗?
至少会为程序员节省大量搜索时间。
【问题讨论】:
-
“如果这些各自的类公开公共枚举来分配属性,那不是更好吗?”不!
-
完全同意@Raymond。我认为它只使用 String 作为常量,因为 [1] 与在 Enum 存在之前开发的 std 库向后兼容 [2] 缺乏枚举使用强制和 [3] 如果这些参数可以,则使用字符串是可以接受的唯一原因t 在编译时被发现。当您开始使用用 | 屏蔽的数字 AWT 常量时,情况会更糟。
-
@Unihedron : 除非你用推理来支持它,否则不要征求意见。
-
有三个原因:向后兼容、向后兼容和向后兼容。
标签: java string session enums constants