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的英文意思就可以明白了 

Java5新特性之枚举

1.  概念   首先,枚举并不是一种新技术,而是一种基础数据类型.它隶属于两种基础类型中的值类型,如下:     2.  为什么要有枚举   枚举在真正的开发中是非常常用的,它的作用很简单...
  • wang379275614
  • wang379275614
  • 2014年09月29日 01:11
  • 1634

java enum实现的单例

为了防止通过反序列化得到多个对象,EJ提倡使用enum实现单例: 关于枚举的对象为什么可以反序列化:可以看Enum类的如下方法: Java代码 /** * prevent de...
  • lllliulin
  • lllliulin
  • 2015年11月05日 11:24
  • 1006

Java5 Enum例子

public class EnumTest { public static void main(String[] args) { WeekDay weekDay = WeekDay.FRI; ...
  • oney139
  • oney139
  • 2012年08月18日 12:04
  • 515

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

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

JAVA5 学习(3)

Enumerations 枚举    Enums很像public static final int声明,它原来常被用于enum values。它比ints最大的优点在于它是类型安全的,你不能错误的用一...
  • yq76034150
  • yq76034150
  • 2006年01月10日 19:43
  • 1549

[Java5新特性]Annotation注解

Annotation概述、基本Annotation、自定义Annotation、@Target注解、@Retention注解、反射读取Annotation和注解配置JDBC案例...
  • u013575441
  • u013575441
  • 2015年06月01日 21:27
  • 848

Java 5 新特性——增强for循环

J2SE 1.5提供了另一种形式的for循环。借助这种形式的for循环,可以用更简单地方式来遍历数组和Collection等类型的对象。本文介绍使用这种循环的具体方式,说明如何自行定义能被这样遍历的类...
  • okjohn
  • okjohn
  • 2011年02月11日 16:07
  • 1811

JPA学习笔记(3)——JPA注解

Entity Table Id GeneratedValue Basic Column Transient Temporal @Entity@Entity 标注用于实体类声明语句之前,指出该Java ...
  • u010837612
  • u010837612
  • 2015年08月14日 13:00
  • 2029

haskell学习笔记(3)-Types and Typeclasses

haskell是静态类型加类型推导,现在静态类型中的类型推导现在也越来越常见了,其实确实只看值就知道是什么类型了,写上类型反而使代码看的混乱。haskell里的函数也是有类型的,其实也就和c/c++的...
  • o83290102o5
  • o83290102o5
  • 2017年12月17日 18:39
  • 55

机器学习笔记3——聚类

整理自Coursera。欢迎交流。 背景   比方一个人正在阅读一篇文章,你则呢在语料库里面寻找相似的文章来推荐给这个人呢?这是好多公司面临的问题。你在阅读网页内容的时候网站是怎么给你推送你可能喜...
  • u014303046
  • u014303046
  • 2016年10月22日 20:08
  • 377
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java5 学习笔记3——Enum
举报原因:
原因补充:

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