java - 为什么Java中的常量是这样的?

标签 java enums constants

我已阅读有关 Java 枚举的内容并经常使用它们。但是,我不明白为什么例如 JFrame.EXIT_ON_CLOSE 返回 int

考虑http://download.oracle.com/javase/1.5.0/docs/guide/language/enums.html ;

// int Enum Pattern - has severe problems!
public static final int SEASON_WINTER = 0;
public static final int SEASON_SPRING = 1;
public static final int SEASON_SUMMER = 2;
public static final int SEASON_FALL   = 3;

类型不安全 - 由于季节只是一个整数,您可以在需要季节的地方传递任何其他整数值,或者将两个季节相加(这没有意义)。

JFrame.EXIT_ON_CLOSE返回3,而JFrame.HIDE_ON_CLOSE返回1,也就是后面三个等于第一个。

为什么要这样实现?

最佳答案

Java 没有枚举 until 1.5 - 这些常量中的大部分都是较早引入的,如果将它们更改为枚举,Sun 会破坏很多现有代码。

关于java - 为什么Java中的常量是这样的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5766499/

相关文章:

javascript - AES/CBC/PKCS5PADDING IV - 从 Java 到 NodeJs 的解密

java - 如何使用 Monkeyrunner API 制作 Java 应用程序?

java - 按下后退按钮时使用 MainActivity 登录 Activity

c# - 枚举类文件名应该以 'Enum' 为后缀吗?

java - 为什么 reflections.getSubTypesOf(Object.class) 找不到枚举?

.net - 通过整数类型枚举的简单迭代?

list - 在 ocaml 中定义一棵树 + 指向其子树的指针

c++ - 在派生类 C++ 中重新定义静态常量值

java - Array.newInstance 上传递的泛型参数出现 nullpointerException

html - html 中的常量类似于 C/C++ 中的#define