为什么Java库使用常量整数而不是枚举?

7
我不确定这是否是一个明确的陈述,但在我看来,Java API 更喜欢使用常量整数而不是枚举。从我使用过的API部分来看,我遇到了许多final static int常量,其中可以使用enum代替。这是我此刻正在注视的一个例子:
来自java.awt.BasicStroke
public final static int CAP_BUTT = 0;
public final static int CAP_ROUND = 1;
public final static int CAP_SQUARE = 2;

事实上,我认为我从未在标准Java API类中看到过枚举的使用。这是为什么呢?
我正在为自己的应用程序设计API(比Java API小十亿倍,但我仍然试图聪明地处理它),并尝试决定是使用常量int还是枚举。 帖子引用了一本我还没有读过的非常受欢迎的书,暗示枚举具有许多优点。该线程中其他得分较高的答案大多同意。那么为什么Java似乎不使用自己的枚举功能呢?

3
发帖后,我脑海中突然闪现一个猜想。也许在设计所有这些类时,Java很久以前还没有enum可用? - The111
7
BasicStroke 早于 Java 1.5 中引入的 enum - Reimeus
1
这可能是在语言还没有枚举(enums)之前编写的代码。由于它是公共 API,因此不能更改。 - James
1
@Reimeus,请将其作为答案发布,并附上“enum” javadoc的链接。 - Luiggi Mendoza
好的,那是一个快速的答案。 :-) 如果Reimeus发布了它,他就会得到答案。 - The111
2个回答

13
<基本画笔>是Java 1.5之前的内容,enum则是在此之后出现的。为了向后兼容,代码保持不变。当编写新代码时,<枚举类型>绝对是比<最终静态>变量更好的设计选择。请注意保留HTML标签。

11
这与常量int比enum更好无关,只是因为enum是在JDK 5中添加的,所以大多数java API是在enum可用之前编写的:常量int是唯一的选项,因此被使用。
如果重新编写java API,它将包括更多的枚举,并且您可以期望在JDK6或更高版本的新API中看到它们出现。
您应该在应用程序中使用枚举,它们通常是更好的选择。

谢谢Jon,如果Reimeus没有先发表评论,你就能得到答案了。;-) 这里也有很好的信息。 - The111
他这么做了吗?我的屏幕显示我发出的时间是16分钟前,他的是14分钟前。不过我并不生气 :p - Jon Story
他在发布答案之前发了一条评论。;-P 我向他保证如果他把它作为答案发布,我会给予"接受"的,就在我看到你的回答出现之前。不得不违背我的诺言...但通常我会将"接受"给予总分较低的弱者。 :-) - The111

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接