枚举居然还可以实现单例??

平时在工作的开发中, 发现同事用枚举用的特别溜, 你说自己知道吗? 感觉枚举自己是会用的, 但是自己觉得就是不够深刻, 应该是内心没有真正的掌握掉这个东西, 所以总是无意识的逃避使用这个, 或者说有时候真的想不起来用这个东西.

1. 枚举的优势

那接下来不得不来叨叨枚举的优势了, 它到底有什么好的, 让那么多人用这个呢?

  1. 增强代码可读性(装逼神器)

不得不说, 如果你用了枚举, 立马感觉你跟一般的程序员不一样了, 这个绝对是你装逼和吹牛逼的一个神器吧(嘿嘿)

  1. 去除equals两者判断 由于常量值地址唯一,使用枚举可以直接通过“==”进行两个值之间的对比,性能会有所提高。

  2. 编译优势(与常量类相比)

常量类编译时,常量被直接编译进二进制代码中,常量值在升级中变化后,需要重新编译引用常量的类,因为二进制代码中存放的是旧值。枚举类编译时,没有把常量值编译到代码中,即使常量值发生改变,也不会影响引用常量的类。

  1. 修改优势(与常量类相比)

枚举类编译后默认final class,不允许继承可防止被子类修改。常量类可被继承修改、增加字段等,易导致父类不兼容。

  1. 枚举型可直接与数据库交互。

  1. Switch语句优势

使用int、String类型switch时,当出现参数不确定的情况,偶尔会出现越界的现象,这样我们就需要做容错操作(if条件筛选等),使用枚举,编译期间限定类型,不允许发生越界。

2. 常用场景

抛开业务谈设计, 一切都是扯淡, 所以你必须知道枚举的应用场景, 最重要的是你应该知道什么时候用它, 否则, 就算你知道怎么用, 但是不知道该用它了, 它还是摆设.

2.1 如果超过两个以上的常量的定义, 可以考虑使用枚举

一般我们定义常量都是需要public static final.... , 现在你要是会使用枚举, 直接换一个高逼格的枚举来搞定吧, 而且枚举也提供了比常量更多的方法.

public enum Color {  
  RED, GREEN, BLANK, YELLOW  
}

2.2 在switch语句中, 可以考虑使用枚举

enum Signal {  
    GREEN, YELLOW, RED  
}  
public class TrafficLight {  
    Signal color = Signal.RED;  
    public void change() {  
        switch (color) {  
        case RED:  
            color = Signal.GREEN;  
            break;  
        case YELLOW:  
            color = Signal.RED;  
            break;  
        case GREEN:  
            color = Signal.YELLOW;  
            break;  
        }  
    }  
} 

3. 枚举在工作中的一个应用

我们先

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值