为了账号安全,请及时绑定邮箱和手机立即绑定

enum是什么? 为什么有它? 怎么用?

enum是什么? 为什么有它? 怎么用?

宝慕林4294392 2019-03-01 11:04:53
实际现象 enum的基本会用, 但想追本溯源( 探讨下本质 ) 预期现象 拒绝教条式的摘抄文档式的回答(时间重要) 求对enum深刻的认识(至少在实际生产环境中写过很多代码) ! 注: 我不是编程初学者, 一些初级概念无需科普 上下文环境 讨论的对象, 为Java中的enum( 其实enum是一种概念 ) 具体地, 是讨论enum 这个关键字
查看完整描述

7 回答

?
慕村225694

TA贡献1880条经验 获得超4个赞

  1. 可以用来代替定义类型常量 ,比如 订单状态,证件类型等,保证类型安全
    比如用普通的String类表示订单状态,调用方可以传一个不在订单状态范围内的String给被调用方,这种错误在编译阶段不能发现

  2. java枚举类本质是一个多例模式实现,单例模式是多例模式的一个特例

  3. 枚举类不能继承,比如enumA extends enumB不行

  4. 一个枚举类 内部类型有顺序(order) 实现了 Comparable接口

查看完整回答
反对 回复 2019-03-01
?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

Effective Java 第6章有详细的解释,可以去看看

查看完整回答
反对 回复 2019-03-01
?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

可以简单把enum看成一个有备注信息的int类型。

查看完整回答
反对 回复 2019-03-01
?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

被你的条件吓到了,我就说一点我个人的想法

enum可以看做一种特殊的class,包含一些访问性公开的常量,其实作为访问性公开的常量来说,在类加载过程中已经被解析到常量池,enum只是从语义的角度使用户可以更方便地在使用常量时展示常量的含义。同时也方便了常量的构造,循环遍历某一类型的所有常量,在switch语句中使用等等。

查看完整回答
反对 回复 2019-03-01
?
智慧大石

TA贡献1946条经验 获得超3个赞

这个题目太泛,不太好回答。
enum本质上是一个继承了java.lang.Enum的class,可以用在单例和需要限定输入的地方

查看完整回答
反对 回复 2019-03-01
?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

先说说自己个人的肤浅的主观的理解, 抛砖引玉.

我觉得 enum 出现的目的是:

  • 提供一种管理常量的手段,

  • 一种命名空间.

查看完整回答
反对 回复 2019-03-01
?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

enum的存在本身就是为了解决常量的可读性的问题,在没有enum之前,标记一种状态,常使用int类型,其1,2之类的可读性不是很好,而且新增一个常量要写一个长长语句,为了解决这一系列问题在jdk5就加上了这个功能。其本质就是一个类,只不过在创建enum的时候,会自动生成values()、ordinal()等方法,并且支持了switch语句,覆盖了常量会出现的场景,比直接定义常量要方便使用。

查看完整回答
反对 回复 2019-03-01
  • 7 回答
  • 0 关注
  • 1077 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号