7

我不确定这是否是一个明确的陈述,但在我看来,Java API 更喜欢常量整数而不是枚举。从我使用过的 API 部分中,我遇到了许多可以使用final static intan 的常量。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 小大约十亿倍,但我仍在努力做到聪明),并试图决定是使用常量整数还是枚举。 这篇文章引用了一本我还没有读过的非常受欢迎的书,这意味着枚举有很多优点。同一线程中的大多数其他高分答案都同意。那么为什么 Java 似乎没有使用自己的枚举功能呢?

4

2 回答 2

13

BasicStroke早于 Java 1.5 中的枚举。为了向后兼容,代码保持原样。在编写任何新代码时,enums绝对是比final static变量更好的设计选择。

于 2013-02-23T23:57:03.247 回答
11

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

如果 Java API 被重写,它将包含更多的枚举,并且您可以期望看到它们出现在 JDK6 或更高版本的 API 的新添加中。

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

于 2013-02-23T23:55:37.600 回答