- 浏览: 325049 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
xuanyuanxiaoxue:
...
Android - LayoutInflater -
柴兴博:
不错 多谢
Android 悬浮Activity并可拖动(访悬浮歌词) -
di1984HIT:
写的很好,我收藏一下。
java之动态代理模式(JDK和cglib) -
chinacssnj:
待测试,明天测,测试的结果发给大家
网络开发上传文件到服务器 -
fx_199182:
...
Android之MediaPlayer
1.枚举元素列表必须写在枚举类的最前面,每个元素之间用逗号隔开,元素列表结束位置后若没有其他内容,则可以不写分号,否则必须要写。
2.枚举类中所有的构造器是private的,外部程序不能够创建枚举类的实例。枚举类中可以显式的指明调用哪个构建器,如MEMBER和 MEMBER()这两种元素列表声明是等价的,都是调用默认的构建器,
而MEMBER("普通会员")则是显式的指明程序调用第二个构建器.
(1) 构造器只是在构造枚举值的时候被调用。
(2) 构造器只能私有private,绝对不允许有public构造器。这样可以保证外部代码无法新构造枚举类的实例。这也是完全符合情理的,因为我们知道枚举值是public static final的常量而已。
而且这个私有修饰符是由编译器自动加的,如果我们定义这些构造函数时,在前面加上public 修饰符, 就会导致编译错误, 但枚举类的方法和数据域可以允许外部访问。
(3) 枚举类型里定义的每一个值都是枚举类型的一个实例,缺省时都将映射到Enum(String name, int ordinal) 构造函数中.枚举类型可以使用参数为定义一些自己的构造函数。
3.枚举类可以有抽象方法,但必须在元素列表声明中实现这些方法。此外,枚举类中还可以声明一些普通的成员变量和方法,如上例所示。
枚举类中常见方法
1).toString()方法,显示枚举类元素,上例中对这个方法进行了覆盖,如果不覆盖它的话一般打印变量名,上例中为"MEMBER","ADMIN","SUPERADMIN";
2).valueOf(String arg0)方法,通过传入的arg0字符串解析出一个该枚举类的实例,其中传入的字符串必须是元素列表的名称之一,否则将抛出 java.lang.IllegalArgumentException异常,
在web应用中这个方法作用很重要。该方法为静态方法,不需创建实例即可使用,如通过EnumAccessControll.valueOf("MEMBER")即可返回Member实例.
3).values()方法,返回一个该枚举类的数组,其中数组的元素即为该枚举类中元素列表中的元素。
4).ordinal()方法,返回枚举元素实例中元素列表中的位置,起始位置为0。如 EnumAccessControll.SUPERADMIN.ordinal()的结果为2。
5).compareTo()方法,比较两个元素。
6).getDeclaringClass()返回与此枚举常量的枚举类型对应的Class对象。
7).name()方法,默认情况下返回元素实列的变量名,该方法为final不可覆盖的.
注意事项:
1:所有创建的枚举类型都扩展于 java.lang.Enum. Enum 是在J2SE 5.0 里定义的一个新类,它本身不是枚举类型.在创建枚举类型时,必须用enum 关键字,不能直接地定义一个继承Enum的类来创建一
个枚举类型,尽管所有创建的枚举类型实际上都是Enum 的子类.
2:枚举类型里定义的每一个值都是枚举类型的一个实例,缺省时都将映射到Enum(String name, int ordinal) 构造函数中.枚举类型可以使用参数为定义一些自己的构造函数。
另外要强调的两点:
1)一是这些枚举类型的构造函数都是私有的.它是不能被其它的类或者其它的枚举类型调用的. 而且这个私有修饰符是由编译器自动加的,如果我们定义这些构造函数时,在前面加上public 修饰符,
就会导致编译错误,
2)二是变量定义必须在枚举类型值定义之后
3:枚举类型每一个值都是public, static and final的.也就是说,这些值是唯一的而且一旦定义了是不能被重写或修改.而且尽管在枚举类型每一个值声明时没有出现static关键字,实际上值都是静态的,
而且我们不能在值前面加上static, public,final 修饰符
4:switch语句里使用枚举类型时,一定不能在每一个枚举类型值的前面加上枚举类型的类名(case后面的值),否则编译器就会报错
5:在J2SE 5.0 的java.util 程序包中提供两个新类:EnumMap 和 EnumSet,这两个类与枚举类型的结合应用可使以前非常繁琐的程序变得简单方便.EnumMap 类提供了java.util.Map 接口的一个特殊实现,
该接口中的键(key)是一个枚举类型
6:特定于常量的类主体 :
提到枚举类型可以定义自己的函数,其实更进一步,枚举类型的每一个值都可以实现枚举类型里定义的抽象函数
枚举中添加新方法
public enum OzWitch { WEST("west"), NORTH("north"), EAST("east"), SOUTH("south"); private String description; private OzWitch(String description){ this.description=description; } public String getDescription(){ return description; } public static void main(String[] args){ for(OzWitch witch:OzWitch.values()) System.out.println(witch+":"+witch.getDescription()); } }
覆盖enum的方法
覆盖toString()方法,给我们提供了另外一种方式莱维枚举实例生成不同的字符串描述信息。下面的示例,我们使用的就是实例的名字,不过我们希望改变其格式,覆盖enum的
toString的方法与覆盖一般类的方法没有区别;
public enum SpaceShip { SCOUT,CARGO,TRANSPORT,CRUISER,BATTLESHIP,MOTHERSHIP; public String toString(){ String id= name(); String lower=id.substring(1).toLowerCase(); return id.charAt(0)+lower; } public static void main(String[] args){ } } run: Scout Cargo Transport Cruiser Battleship Mothership
values() VS getEnumConstants()
由于values方法时由编译器插入到enum定义中的static方法,所以,如果你将enum实例向上转型为Enum,那么values()方法就不可以访问了,不过在Class中有一个getEnmuConstants()
方法,所以即便Enum接口中没有values()方法,我们仍然可以通过Class对象取得所有的enum实例:
enum Search { HITHER,YOU} public class UpcastEnum { public static void main(String[] args){ Search[] vals= Search.values(); Enum e= Search.HITHER; for(Enum en: e.getClass().getEnumConstants()) System.out.println(en); } } run: HITHER YOU
PS:因为getEnmuConstants()是Class上的方法,所以你甚至可以对布什枚举的类调用此方法,值不过,此时该方法返回null,所以当你试图使用其返回的结果时会发生异常。
Enum的实现而非继承
我们已经知道,所有的enum都继承自Java。lang.Enum类,由于java不支持多重继承,所以你的enum 不能在继承其他的类
发表评论
-
java clone技术 浅谈
2011-10-23 14:58 8871.java里的clone分为: A:浅复制(浅克隆): ... -
java synchronized详解
2011-10-23 10:31 721记下来,很重要。 Java语言的关键字,当它用来修饰一 ... -
Java 多线程同步 锁机制与synchronized
2011-10-21 17:25 1357打个比方:一个object就像一个大房子,大门永远打开。房子里 ... -
Java多线程编程总结(转载)
2011-10-21 16:54 728http://www.blogjava.net/cmzy/ar ... -
java内部类的总结
2011-10-15 14:42 677从Java1.1开始引入 ... -
java中的io系统详解
2011-10-10 11:26 712参考:http://expert.iteye.com/blog ... -
Java代码编写的30条建议
2011-10-10 10:22 716(1) 类名首字母应该大写 ... -
Java中局部内部类可以访问它所在方法中定义的final修饰的局部变量的合理解释
2011-09-20 11:21 1273标题有点长,可能有点 ... -
六种异常处理的陋习
2011-09-19 14:42 678你觉得自己是一个Java专 ... -
Java中常见的异常
2011-09-19 14:05 918Java 中异常的分类 所有异常,都继承自 ... -
Java异常的分类 .
2011-09-18 21:52 7611. 异常机制 异 ... -
java数组反射
2011-09-13 17:35 2027数组反射 如果因为某种原因,您并不确定参数或对象是不是数组, ... -
Java中反射机制详解
2011-09-13 14:53 1208问题: 在运行时,对一个JAVA类,能否知道属性和方 ... -
java枚举之EnumSet and EnumMap
2011-09-12 20:17 2585一:EnumSet import java.util.*; ... -
java中获取日期函数应用
2011-09-10 17:11 828(1)String类型转换成日期(Date类型) Sim ... -
java 时间格式化问题
2011-09-10 17:05 974java 时间格式化问题 java.util.*; ... -
Java深度历险之Java泛型
2011-09-10 16:46 696Java泛型(generics)是JDK ... -
Java 集合篇
2011-09-07 18:51 7561. Java集合类库中最重要的两个接口Collec ... -
Comparable和Comparator接口
2011-09-06 13:13 738当需要排序的集合或数组不是单纯的数字型时,通常可以使用C ... -
Java对象初始化顺序
2011-09-06 10:56 1258前几天与fwb同学说起java笔试题,想起这个东西经常被考,重 ...
相关推荐
java 枚举(enum) 详解(学习资料); java 枚举(enum) 详解(学习资料); java 枚举(enum) 详解(学习资料); java 枚举(enum) 详解(学习资料);
Java enum的用法详解,可作为开发api
Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类...
NULL 博文链接:https://janeky.iteye.com/blog/463611
Java enum的用法详解
主要介绍了java 中enum的使用方法详解的相关资料,希望通过本文能帮助到大家,理解掌握java 中enum的使用方法,需要的朋友可以参考下
NULL 博文链接:https://rensanning.iteye.com/blog/2013734
主要介绍了详解Java的Enum的使用与分析的相关资料,需要的朋友可以参考下
博文“Java 语言中 Enum 类型的使用介绍”的源码。
java enum详细教程。由浅入深,包括基本语法方面..很适合新手学习。/n各位看官。绝对超值。
javaenum(枚举)使用详解+总结.pdf
Java中的Enum的使用与分析
java枚举类型的定义使用介绍,还有示例。
主要介绍了java 中枚举类enum的values()方法的详解的相关资料,希望通过本文大家能够掌握这部分内容,需要的朋友可以参考下
全面掌握java枚举类型(enum-type)1
Java ---- enum --- 枚举类案例
主要给大家介绍了关于Java的枚举enum的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
主要介绍了Java枚举类型enum的详解及使用的相关资料,需要的朋友可以参考下