java5 学习笔记3——Enum

原创 2007年09月19日 00:01:00


 我觉得Enum的基本功能,就是作为final static字段的替代品吧,的确让代码抽象程度提高了,也方便维护了,不过Enum的功能绝不限于此,既然是在新时期下出现的枚举,自然要比起C++前辈有突破才不会挨骂


 一开始用Enum,潜意识里总是和final static和C++的联系起来,其实除了功能有些相似外,Java的Enum有很多功能亮点,不过受到传统思维影响,最容易犯的一个错误是:把Enum的每个枚举值与整数联系起来(C的思维)。虽然Enum的确有ordinal方法,可以返回Enum中每个值的顺序(从零开始),但不代表每个值都是对应整数,两者没什么关系。同时Enum本身就是一种类型,不能总是将其与int或者String这些“底层实现”混在一起(或许编译成字节码后真的是某种int?不过那不是我们考虑的事情)


 此外,Enum可以有方法,可以实现某个接口,对应Enum的每个值还可以定义不同的方法内容...但是Enum不能被继承,而且,你写的每个Enum,都是隐含的继承自java.lang.Enum,这个类不能被你显示的继承,也就是说,除了要创建新的Enum,这个类你基本上不用理会


 我觉得Enum最有趣的地方、也是比较有特色的地方在于它和Map与Set之间的互操作。collection新加了一个EnumMap和EnumSet,可以将两者高效地结合起来,借助Enum对值的限制,可以很方便地让Map和Set也沾点光。
EnumSet有很多静态方法,可以生成EnumSet,比如allOf(Class element),可以生成包含指定类型的所有元素的EnumSet,再比如complementOf( EnumSet e),可以生成一个新的EnumSet,里面包含和“e”关联的Enum中,没有包含在“e”的枚举值,看看complement的英文意思就可以明白了 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C++11学习笔记(3)—— enum

1.简介 以往的enum类型将枚举成员的作用域暴露在枚举变量之外,用户不需要指定枚举类型就可以直接使用枚举的内容,这就有可能会造成名字的冲突,为了解决该你问题,C++11引入了强类型的枚举类型(st...

Java web学习笔记——入门2011/3/5

Java web学习笔记——入门2011/3/5 本文内容遵从CC版权协议转载请注明出自WanderingDream总目录地址:http://blog.csdn.net/WanderingKnight...

c语言学习笔记(5)enum和typedef分析

摘要:总结了enum和typedef的含义,以及他们和define的区别。 一、enum是什么     enum是一种自定义类型,其默认的常量在前一个值的基础上加1,如果不给默认的常量赋值...

python3学习笔记:枚举enum

1. 枚举的定义首先,定义枚举要导入enum模块。 枚举定义用class关键字,继承Enum类。 用于定义枚举的class和定义类的class是有区别【下一篇博文继续分享】。  示例代码:from e...

Lucene5 学习笔记(3) —— 重用 IndexReader 和常用的搜索方法

02_lucene简介和搜索初步.avi

Hibernate3学习笔记(5)——Hibernate查询技术之Criteria查询

Criteria查询又称为对象查询,它使用一种封装了基于字符串形式的查询语句的API来查询对象。 在使用HQL查询方式,需要定义基于字符串形式的HQL语句,虽然比JDBC代码有所进步,但仍繁琐且不方...

Qt5学习笔记(3)——树形控件QtreeWidget

1.Qt怎么添加图片资源?2.Qt报错No rule to make target “D:/XXX/XXX/XXX”,needed by “D:/XXX/XX/XX” Stop

MySql 基础学习笔记 1——概述与基本数据类型: 整型: 1)TINYINT 2)SMALLINT 3) MEDIUMINT 4)INT 5)BIGINT 主要是大小的区别 图 浮点型:命令

一、CMD中常用mysql相关命令 mysql -D, --database=name  //打开数据库 --delimiter=name  //指定分隔符 -h, --host=nam...

Unity3d 5.x 学习笔记(3)—— 发射预制体子弹(Instantiate),点射,扫射,五连发效果

代码实例1(点射发射一颗预制体子弹) using UnityEngine; using System.Collections; public class Shoot : MonoB...

14. JAVA 枚举(Enum、类集EnumMap&EnumSet 、实现接口、定义抽象方法) ----- 学习笔记

本章目标: 1
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)