枚举的作用和特性

一、关于枚举的介绍这里引用:http://blog.sina.com.cn/s/blog_4adc4b090101dtxp.html  枚举是一种规范它规范了参数的形式,这样就可以不用考虑类型的不匹配并且显式的替代了int型参数可能带来的模糊概念 ,它打印出来有自己的名字和顺序(即枚举里的序号)。枚举像一个类,又像一个数组。

  Enum作为Sun全新引进的一个关键字,看起来很象是特殊的class, 它也可以有自己的变量,可以定义自己的方法,可以实现一个或者多个接口。 当我们在声明一个enum类型时,我们应该注意到enum类型有如下的一些特征:

1.它不能有public的构造函数,这样做可以保证客户代码没有办法新建一个enum的实例。 

2.所有枚举值都是public , static , final的。注意这一点只是针对于枚举值,我们可以和在普通类里面定义 变量一样定义其它任何类型的非枚举变量,这些变量可以用任何你想用的修饰符。 

3.Enum默认实现了java.lang.Comparable接口。 

4.Enum覆载了了toString方法,因此我们如果调用Color.Blue.toString()默认返回字符串”Blue”. 

5.Enum提供了一个valueOf方法,这个方法和toString方法是相对应的。调用valueOf(“Blue”)将返回Color.Blue.因此我们在自己重写toString方法的时候就要注意到这一点,一把来说应该相对应地重写valueOf方法。 

6.Enum还提供了values方法,这个方法使你能够方便的遍历所有的枚举值。 

7.Enum还有一个oridinal的方法,这个方法返回枚举值在枚举类种的顺序,这个顺序根据枚举值声明的顺序而定,这里Color.Red.ordinal()返回0。 

二、下面介绍一下枚举的原理:其实枚举原理就是用内部类实现的,当然内部类里还有其他的方法,类似下面:
public class Weekday {

	public final static Weekday Mon=new Weekday(){
		public Weekday nexday(){
		return Tue;
		}
	};
	public final static Weekday Tue=new Weekday(){
		public Weekday nexday(){
			return Wen;
		}
	};
	public final static Weekday Wen=new Weekday(){
		public Weekday nexday(){
			return Tue;
	}

	};

  

时间: 2024-10-23 02:57:23

枚举的作用和特性的相关文章

枚举的作用和特性,为枚举元素添加方法

一.关于枚举的介绍这里引用:http://blog.sina.com.cn/s/blog_4adc4b090101dtxp.html 枚举是一种规范它规范了参数的形式,这样就可以不用考虑类型的不匹配并且显式的替代了int型参数可能带来的模糊概念 ,它打印出来有自己的名字和顺序(即枚举里的序号).枚举像一个类,又像一个数组. Enum作为Sun全新引进的一个关键字,看起来很象是特殊的class, 它也可以有自己的变量,可以定义自己的方法,可以实现一个或者多个接口. 当我们在声明一个enum类型时,

JAVA枚举的作用与好处

枚举是一种规范它规范了参数的形式,这样就可以不用考虑类型的不匹配并且显式的替代了int型参数可能带来的模糊概念 枚举像一个类,又像一个数组. Enum作为Sun全新引进的一个关键字,看起来很象是特殊的class, 它也可以有自己的变量,可以定义自己的方法,可以实现一个或者多个接口. 当我们在声明一个enum类型时,我们应该注意到enum类型有如下的一些特征. 1.它不能有public的构造函数,这样做可以保证客户代码没有办法新建一个enum的实例. 2.所有枚举值都是public , stati

C#枚举中使用Flags特性

.NET中的枚举我们一般有两种用法,一是表示唯一的元素序列:还有就是用来表示多种复合的状态.这个时候一般需要为枚举加上[Flags]特性标记为位域,这样我们就可以用"或"运算符组合多个状态. 例如: [Flags] public enum Permission { create = 1, read = 2, update = 4, delete = 8, } Permission permission = Permission.create | Permission.read | Pe

枚举的作用与场景

从设计的角度考虑,别人再引用你的程序时: 枚举可以限定参数的个数,对调用者的行为能更加严格地进行控制.把一些运行期的参数检查放到了编译期,做到这点是一个很大的进步. 从静态变量的角度考虑,自己编写,自己用 直接用 public static final ...来定义变量即可 反编译 枚举类: http://unmi.cc/understand-java-enum-with-bytecode/

获取枚举类型Description特性的描述信息

C#中可以对枚举类型用Description特性描述. 如果需要对Description信息获取,那么可以定义一个扩展方法来实现.代码如下: public static class EnumExtensions { public static string GetDescription(this object value) { if (value==null) return string.Empty; Type type = value.GetType(); var fieldInfo = ty

【C#进阶系列】17 特性Attribute

这个东西有的叫定制特性,然而我喜欢直接叫特性,但是这样的话一些人不知道我说的是什么,如果我说是Attribute的话那么知道的或者用过的就都懂了. 还记得讲到枚举和位标志那一章,关于位标志,有一个[Flags]的用法. [ComVisible(true)] [Flags] public enum FileAttributes { /***/ } 这里的ComVisible和Flags就是特性. 特性的作用 利用特性可宣告式地为自己的代码构造添加注解来实现特殊功能.它相当于往元数据表里写附加信息,

java枚举与.net中的枚举区别

通过一段时间的项目实践,发现java中的枚举与.net中的枚举有很大的差别,初期造成了我对java中的枚举一些错误理解及部分有缺陷的应用,其实追其原因还是因为我会习惯性的认为java的枚举在作用以及定义上与.net应该是差不多的,毕竟两者都是高级语言,语言上也有很多相似之处.这就是老师傅常说的新手好教,老兵不好教的原因,新手脑子一片空白不会有任何干扰,老兵总会以自己曾经的某些经验与新知识做对比.     习惯性观点一:枚举的定义应该与.net相同,比如在.net中我们可以这样定义枚举. publ

day17JDK5.0新特性与正则表达式

1 Eclipse简介和使用 IDE(Integrated Development Environment ): 集成开发环境,集合开发.运行.调试于一体的一个软件 Eclipse 是一个开放源代码的.基于Java的可扩展开发平台. 下载地址: http://www.eclipse.org/ 1.1 管理: 工作空间(workspace).工程(project) workspace 工作空间:代码保存在硬盘的空间建议按照班级号(20121224) 注意:工作空间命名不能选择带中文或者空格的例如(

c#特性详解【含常用过滤器实例】

基础拾遗 基础拾遗------特性详解 基础拾遗------webservice详解 基础拾遗------redis详解 基础拾遗------反射详解 基础拾遗------委托详解 基础拾遗------接口详解 基础拾遗------泛型详解 前言 本来7月份想着是用一个月把基础拾遗写完的,结果断断续续写了4个月了,才写了这几篇,这两天又规划着多写几篇,希望能坚持吧.两天一次和同事聊天竟然好多人都不知道,他们每天却都在用. 1.特性概念 特性(Attribute)是用于在运行时传递程序中各种元素(