java 枚举类小结 Enum
2015-08-03 23:32
357 查看
好久没有接触枚举类了,差不多都忘了,今天抽出个时间总结一下吧。说实话,枚举类确实能够给我们带来很大的方便。
说明:枚举类它约定了一个范围,可以理解成只可以生成固定的几个对象让外界去调用,故枚举类中的构造方法都是private类型的。进而求其次,究竟枚举类到底有何特殊之处呢?
呈上代码一览(本人也是java Android 领域的菜鸟,如有错误之处,希望大家能够给以指点)
说明一下我以上代码的几个关键的因素:
1.以前不太明白枚举类中一开始的对象如何去写,其实很简单,只是原始类的缩写而已,注意枚举类默认继承了Enum类,所以不能再继承。看如下代码:
其实枚举类中的对象和这个写法是一样的,只不过在enum声明的类中不能够这么写。可以这样理解,既然枚举类已经限定了范围,只能在枚举类中new对象,故构造方法是private类型,外界也不允许修改,故它就是不变的,所以声明成为final类型,对象初始化,这点相信大家都知道的。然而在enum中,已经知道这种约定,所以enum类中不允许这样写,把默认的都删掉,有点类似接口中的final static 。所以就剩下MAN("zhangsan","12")。强调一点,枚举对象必须写在类的开头。
2.在测试枚举类中,引用枚举类的对象相信大家一看就能明白。还有两个方法说明一下,一是values方法,取得枚举类中定义的枚举类的对象,返回的是一个枚举类的集合。如上依次遍历。。。其次是valuesof方法,根据名字获取枚举类型的对象,强调一下,valuesof(String str)中的参数必须是枚举类中对象的名字,否则将会报异常。
今天有点晚了。。明天再做更新啦。。
说明:枚举类它约定了一个范围,可以理解成只可以生成固定的几个对象让外界去调用,故枚举类中的构造方法都是private类型的。进而求其次,究竟枚举类到底有何特殊之处呢?
呈上代码一览(本人也是java Android 领域的菜鸟,如有错误之处,希望大家能够给以指点)
/** * 测试枚举类 * @author Administrator * @Date 2015-8-3 */ public class EnumTest { public static void main(String[] args) { Person person1 = Person.MAN; System.out.println(person1); Person.MAN.work(); Person.WOMEN.work(); } //测试Person的values()方法 public static void testValues(){ Person []persons = Person.values(); for(Person p:persons){ System.out.println(p); } } //测试Person的valuesof()方法 public static void testValuesOf(){ Person person2 = Person.valueOf("MAN"); System.out.println(person2); } } /** * 测试接口 * @author Administrator * @Date 2015-8-3 */ interface PersonExtends{ void work(); } /** * 枚举类 * @author Administrator * @Date 2015-8-3 */ enum Person implements PersonExtends{ MAN("zhangsan","12"){ public void work(){ System.out.println("能干体力活,承受得住重量"); } },WOMEN("lisi","13"){ public void work(){ System.out.println("职场白领居多,能者居之"); } }; private String name; private String age; private Person(String name,String age){ this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public void method(){ System.out.println("The person is liming"); } @Override public String toString() { // TODO Auto-generated method stub return super.toString(); } @Override public void work() { // TODO Auto-generated method stub System.out.println("男人和女人工作的强度不同"); } }
说明一下我以上代码的几个关键的因素:
1.以前不太明白枚举类中一开始的对象如何去写,其实很简单,只是原始类的缩写而已,注意枚举类默认继承了Enum类,所以不能再继承。看如下代码:
private final Person2 MAN = new Person2("zhangsan","12");
其实枚举类中的对象和这个写法是一样的,只不过在enum声明的类中不能够这么写。可以这样理解,既然枚举类已经限定了范围,只能在枚举类中new对象,故构造方法是private类型,外界也不允许修改,故它就是不变的,所以声明成为final类型,对象初始化,这点相信大家都知道的。然而在enum中,已经知道这种约定,所以enum类中不允许这样写,把默认的都删掉,有点类似接口中的final static 。所以就剩下MAN("zhangsan","12")。强调一点,枚举对象必须写在类的开头。
2.在测试枚举类中,引用枚举类的对象相信大家一看就能明白。还有两个方法说明一下,一是values方法,取得枚举类中定义的枚举类的对象,返回的是一个枚举类的集合。如上依次遍历。。。其次是valuesof方法,根据名字获取枚举类型的对象,强调一下,valuesof(String str)中的参数必须是枚举类中对象的名字,否则将会报异常。
今天有点晚了。。明天再做更新啦。。
相关文章推荐
- dom4j将xml转换成对象
- Eclipse将引用了第三方jar包的Java项目打包成jar文件的两种方法
- Java基础-----面向对象
- eclipse源代码热部署
- Java面向对象--继承
- Struts_json插件配置参数
- HeadFirst Java读后感
- JAVA拾遗——基本语法,汇总及练习。
- Java--传参的值传递和引用传递问题
- java notepad++
- 转!!java线程状态
- java发送邮件(2)
- SpringMVC + Spring 3.2.14 + Hibernate 3.6.10
- SpringMVC 文件上传配置,多文件上传,使用的MultipartFile
- JNI——Java调用DLL
- java基础知识整理:
- java平台的提高性能的几点建议
- 黑马程序员——struts2学习笔记一
- win7搭建android开发环境——离线一体化配置Eclipse+ADT+SDK
- 如何在spring mvc中上传图片并显示出来