您的位置:首页 > 其它

学习笔记--枚举

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编译器帮我们添加了很多代码的类。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: