为什么Java库比枚举更多地使用常量int?

时间:2013-02-23 23:52:31

标签: java api enums int constants

我不确定这是否是一个明确的陈述,但在我看来,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还是枚举。 THIS帖子引用了一本我还没有读过的非常受欢迎的书,这本书暗示了词汇有许多优点。在同一个线程中大多数其他得分高的答案都同意。那么为什么Java似乎没有使用自己的枚举功能呢?

2 个答案:

答案 0 :(得分:13)

到达Java 1.5的

BasicStroke前置enum。为了向后兼容,代码已保留 as-is 。在编写任何新代码时,enums绝对是比final static变量更好的设计选择。

答案 1 :(得分:11)

这与常量int比枚举更好无关:只是enum只在JDK 5中添加,因此大多数java API都是在枚举可用之前编写的:常量int是唯一的选项,因此被使用

如果重新编写了java API,它将包含更多的枚举,并且您可以看到它们出现在JDK6或更高版本的API的新增内容中。

你可能应该使用枚举用于你的应用程序,它们通常是更好的选择。