学习笔记--枚举
2013-10-30 19:15
169 查看
摘要
首先记录编程中经常遇见的问题变量只有几种可能的取值,然后记录如何在没有枚举的情况下实现该功能,最后介绍如何使用枚举解决该问题且和传统类实现方式有什么区别以及为什么使用枚举。1.使用类来实现枚举功能
在编程中经常会遇到某些变量只有几种可能的取值,例如:季节春夏秋冬、性别男女、星期等。那么如何来实现上述的问题呢?如果使用传统的类来实现呢?我们知道,值只有固定的几个所以为了保护数据的合理性我们不能让调用者去创建一个对象随意我们必须将构造方法设置成私有的,那么我们必须提前先为每个值创建一个对象,供外部使用。下面以季节为例子展示如何使用类实现"几种可能的取值"。class Season{ public static Season SPRING = new Season("春季"); public static Season SUMMER= new Season("夏季"); public static Season AUTUMN= new Season("秋季"); public static Season WINTER= new Season("冬季"); private String name; private Season(String name){ this.name = name; } }
2.使用java提供的枚举实现需求并和使用类实现进行比较
由于构造函数为private所以调用者只能通过Season.value这种方式获取季节的值,所以这就避免了数据出现错误的情况。现在假设我们又要实现一个星期这个类,那我们会发现代码的结构和上述的基本上一样1.私有构造方法 2.通过public 常量向外部提供值,如果这种类多了那我们将会写很多重复类似的代码,为了解决这个问题java 1.5提出了枚举这个新特性。下面将看下如何使用枚举来减少我们的工作量。
依然以季节为例,展示如何实现季节:
enum Season{ SPRINT("春季"),SUMMER("夏季"),AUTUMN("秋季"),WINTER("冬季") private String name; public Season(String name){ this.name = name; } }
上面简单的几句代码就实现了上面使用类来实现。枚举不仅在代码编写上可以减少工作,它还为我们提供了各种常用功能:
valueOf(String str)返回字符串指定的枚举值
ordinal()返回枚举值在枚举当中的序号
values()返回枚举所有的值
当然我们可以使用类来完成上面的功能,但工作量可想而知。
总结
由于变量只有几种可能的值得情况非常普遍,使用类来实现的话代码骨架基本上是一样的且一些常用功能也是一直,枚举是我们避免了重复的代码,提高了开发效率。实际上枚举本身也是类,只是java编译器帮我们添加了很多代码的类。相关文章推荐
- HOOK SwapContext 枚举隐藏进程(学习笔记4)
- C语言枚举学习笔记
- 黑马程序员---学习笔记11:枚举
- 学校学习ios教程笔记,第五节swift中的字典以及枚举的概念与操作和初识函数
- java学习笔记10--枚举
- Java学习笔记之数组、枚举
- swift学习笔记->结构与枚举
- Java基础学习笔记之枚举与注解
- java学习笔记之枚举类enum(转载)
- C#学习笔记之——枚举、结构体
- Java学习笔记—枚举
- java学习笔记10--枚举
- 枚举, 享元模式,反射,高新技术加强学习笔记
- java JDK8 学习笔记——第18章 自定义泛型、枚举与注释
- C#学习笔记之七:结构和枚举
- 黑马程序员_C语言学习笔记之结构体和枚举
- 14. JAVA 枚举(Enum、类集EnumMap&EnumSet 、实现接口、定义抽象方法) ----- 学习笔记
- 学习笔记:Java 分类枚举和策略枚举(枚举的嵌套)
- java学习笔记_高级篇必会(可变参数,枚举)
- Java学习笔记-枚举