把常量定义在接口里与类里都能通过编译,那2者到底有什么区别呢?
那个更合理?...String, int 等弱类型, 开发人员可以传入没有在常量接口里定义的值, 这个问题无法通过编译器发现
由于开发人员可以直接写常量值, 所以不能用 == 对比, 只能用 equals 对比, 不能优化性能...开发人员在没有参考资料时, 不可能知道某个 int 型的参数到底应该赋什么内容
编译时, 是直接把常量的值编译到类的二进制代码里, 常量的值在升级中变化后, 需要重新编译所有引用常量的类, 因为里面存的是旧值...编译时, 没有把常量值编译到代码里, 即使常量的值发生变化也不会影响引用常量的类
enum 类型
public static enum Grade {
A(4),
B(3),...查看 enum 反编译后的代码与枚举常量类的结构非常相似
这可能是因为 java 的设计者一开始觉得 enum 与 OO 思想不符
所以没有提供支持, 但是随着常量接口的滥用和枚举常量类方案的出现
才在