Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么使用常量而不是枚举?_Java_Enums_Constants - Fatal编程技术网

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

Java 为什么使用常量而不是枚举?,java,enums,constants,Java,Enums,Constants,我已经在很多Java库中看到了很多常量的使用,在这些常量中可以很容易地使用枚举。即使在Swing中,也有很多代码使用常量而不是枚举。为什么? 使用枚举的缺点是什么?因为枚举是在Java 5中引入的,而且这些库早就编写好了。重构它们将破坏大量现有的应用程序。java 5中引入了java中的枚举,这些在以前是不存在的,Enum相当于java中的一个类。 有很多使用预枚举解决方案的文档 有很多开发人员是第一次使用Java,并且有使用常量作为标准的另一种语言的经验 许多库都希望支持Java1.4及更早版

我已经在很多Java库中看到了很多常量的使用,在这些常量中可以很容易地使用枚举。即使在Swing中,也有很多代码使用常量而不是枚举。为什么?


使用枚举的缺点是什么?

因为枚举是在Java 5中引入的,而且这些库早就编写好了。重构它们将破坏大量现有的应用程序。

java 5中引入了java中的枚举,这些在以前是不存在的,Enum相当于java中的一个类。

  • 有很多使用预枚举解决方案的文档
  • 有很多开发人员是第一次使用Java,并且有使用常量作为标准的另一种语言的经验
  • 许多库都希望支持Java1.4及更早版本。Java 1.3和1.4至今仍在使用
  • 工作代码并不是为了使用枚举而重新编写的
我发现我仍然在告诉人们对单身者使用enum,尽管它已经存在7年了P

什么时候使用常量而不是枚举?当您有许多相关但不直接相关的常数时

public static final int BUFFER_SIZE = 32 * 1024;
public static final String ERROR = "Error: ";
public static final char TAB = 't';

在Java1.5之前,Java中没有
enum
,实现enum模式最直接的方法是使用const int。您可以在.

中阅读更多内容,即使在Java 5之后不久,许多API设计人员也不愿意使用枚举,因为出于某种原因,他们不想创建这么多不同的枚举。很高兴,这段时间已经过去,enum现在已经被广泛使用。我仍然在告诉人们不要在singleton中使用enum。也许你可以添加一个链接,说明你不应该这样做的原因(不是我同意,而是为了完整性),你是否应该告诉人们不要使用singleton。我更喜欢无国籍的单身汉。您应该避免创建有状态的单例。