温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java基础 (6) - 枚举

发布时间:2020-07-06 02:43:30 来源:网络 阅读:120 作者:lm8751 栏目:编程语言

能解决
1.类或方法强制使用者传入预设的值
2.性能相对常量更好 - (Android环境除外)

使用办法
public enum ColorEnum{
WHITE("0x000001"),BLACK("0x000002"),GREEN("0x000003");
private final String color;
private ColorEnum(String color){
this.color = color;
}

public String getColor() {
    return color;
}

 public void setColor(String color) {
 this.color = color;
}

}

和类的区别
枚举是真正的 final,客户端不允许创建枚举类的实例,也不能对其进行拓展
public class Color {
public static final Color WHITE = new Color(),
BLACK = new Color(),
GREEN = new Color();
private Color() { }
}

和常量的区别
1) 无法限制开发员继承/实现接口. (枚举是final的构造方法是私有的)
2) 常量作为参数时,是String,int等弱类型,开发员传入没有在常量接口里定义的值,这个问题无法通过编译器发现.
(常量无法 限制开发人员传入的参数数值,而枚举可以在编译阶段强制要求开发人员传入规定数值)
3) 由于开发员可以直接写常量值, 所以不能用==对比,只能用equals对比,不能优化性能
(枚举 equals 也会转化为 == 可参考 https://www.cnblogs.com/xiohao/p/7405423.html )
4) 编译时,是直接把常量的值编译到类的二进制代码里,常量的值在升级中变化后,需要重新编译所有引用常量的类,因为里面存的是旧值. (常量是装载的时候放入堆里,如果发生变化,需要重新编译装载)

参考:
https://www.cnblogs.com/kailejun/p/6624471.html
https://blog.csdn.net/lishuangling21/article/details/71398925
https://blog.csdn.net/hzy38324/article/details/72566678
Android中枚举情况:
https://www.cnblogs.com/zgz345/p/5871351.html
Android中枚举替代方案
https://www.jianshu.com/p/f8ac84a3e3c1

向AI问一下细节
推荐阅读:
  1. 枚举
  2. 详解JAVA枚举

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI