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

一、关于枚举的介绍这里引用: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;
	}

	};

  三枚举也可以有自己的方法和构造函数:

public enum Trafficlamp
	{
		red(2),yello(),green();

		private int index;
		private Trafficlamp()
		{
			System.out.println("11111");
		}
		private  Trafficlamp(int a)
		{
			System.out.println(a);
		}

	}

  四、可以覆写枚举的tostring等方法,也可以给枚举添加虚函数,然后用内部类的方法给枚举的成员初始化来给枚举元素添加方法,

public enum Trafficlamp
	{
		red(2){

			@Override
			Trafficlamp nexlamp() {
				// TODO Auto-generated method stub
				return yello;
			}

		},yello(){

			@Override
			Trafficlamp nexlamp() {
				// TODO Auto-generated method stub
				return green;
			}

		},green(){

			@Override
			Trafficlamp nexlamp() {
				// TODO Auto-generated method stub
				return red;
			}

		};
		private Trafficlamp()
		{
			System.out.println("11111");
		}
		private  Trafficlamp(int a)
		{
			System.out.println(a);
		}

		 abstract Trafficlamp nexlamp();

	}

  

时间: 2024-08-12 05:20:41

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

枚举的作用和特性

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

位标记与Flags特性结合枚举在Unity中的使用小记

位标记与Flags特性结合枚举中的使用小记 enum在应用中往往用来标记一些我们需要的类似开关功能的效果,enum默认的初始化值是根据以下形式赋值的.如下图: 图-1 而且在是用enum来标记位时往往用十六进制而不是十进制,因为十进制的相关性要比十六进制强很多.早在C#4.0以前,要确定一个特定的位是否被设置,是对标志字与该位标志是用位与运算符,如: bool useRed = (ops & Colors.Red) == Colors.Red; C#4.0引入了HasFlag方法用来检测多个标记

Java高级特性之枚举学习总结

在Java SE5之前,我们要使用枚举类型时,通常会使用static final 定义一组int常量来标识,代码如下 public static final int MAN = 0; public static final int WOMAN = 1; 相信很多小伙伴,在实际开发中也是那么干的,既然这样已经能实现枚举的功能,为什么还要引入枚举呢?我们接着往下看当我们需要是同这组“int枚举”是代码如下 public void showSex(int sex){ switch(sex){ case

java 28 - 5 JDK5的新特性 之 枚举的使用

上一章,自定义了枚举类,超级麻烦.. 所以,JAVA给了一个枚举类:类 Enum<E extends Enum<E>> 注意事项 定义枚举类要用关键字enum 所有枚举类都是Enum的子类 枚举类的第一行上必须是枚举项,最后一个枚举项后的分号是可以省略的,但是如果枚举类有其他的东西,这个分号就不能省略.建议不要省略 枚举类可以有构造器,但必须是private的,它默认的也是private的.枚举项的用法比较特殊:枚举(""); 枚举类也可以有抽象方法,但是枚举项

跟王老师学枚举(二):使用枚举

跟王老师学枚举(二):使用枚举 主讲教师:王少华   QQ群号:483773664 一.Java枚举 (一).枚举的关键字是enum 1 2 3 public enum Grade { } (二).枚举也是一个类 1.枚举的构造方法,默认是私有化的 2.枚举的实例对象,默认public static final 1 2 3 public enum Grade {     A,B,C,D,E } 3.枚举的实例对象的变量名,必须放在所有内容之前 二.使用枚举 (一)默认构造方法 1 2 3 pub

子元素的margin-top作用于外层父元素解决方法

子元素的margin-top作用于外层父元素解决方法:有时候在设置子元素的margin-top属性的时候,本来是要作用于父元素,但是表现的结果却是父元素具有了margin-top效果,下面就通过代码实例介绍一下如何解决此问题.代码实例如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="

枚举值按视图效果要求显示的处理方法

public Enum demo{ [Description("我")] wo=0; [Description("你")] ni=1; [Description("他")] ta=2;} 通过中间获得枚举的值,0.1.2 1 public static class EnumHelper 2 { 3 public static string GetDescription<T>(this T value) where T : IForma

css隐藏元素的方法何区别

前言 用 CSS 隐藏页面元素有许多种方法.你可以将 opacity 设为 0.将 visibility 设为 hidden.将 display 设为 none 或者将 position 设为 absolute 然后将位置设到不可见区域. 但是每个方法之前是存在着细微的不同,这些不同决定了在一个特定的场合下使用哪一个方法.下面我的这篇文章就给大家解说一下他们之间的区别吧,让大家能根据场合来选择适合的方式. Opacity 该属性的意思是检索或设置对象的不透明度当他的透明度为0的时候,视觉上它是消

OpenCV:Mat元素访问方法、性能、代码复杂度以及安全性分析

欢迎转载,尊重原创,所以转载请注明出处: http://blog.csdn.net/bendanban/article/details/30527785 本文讲述了OpenCV中几种访问矩阵元素的方法,在指定平台上给出性能比较,分析每种矩阵元素访问方法的代码复杂度,易用性. 一.预备设置 本文假设你已经正确配置了OpenCV的环境,为方便大家实验,在文中也给出了编译源程序的Makefile,其内容如代码段1所示. 采用如代码段2所示的计时函数,这段代码你可以在我之前的博文中找到,abtic()