java 枚举类的简单介绍及使用枚举类的内部类编写的星期几的小案例

为什么需要枚举?
         一些方法在运行时,它需要的数据不能是任意的,而必须是一定范围内的值,此类问题在 JDK5 以前采用自定义带有枚举功能的类解决, Java5 以后可以直接使用枚举予以解决。
JDK5 新增的 enum 关键字用于定义一个枚举类。

枚举类是什么?
       ¨ 枚举类也是一种特殊形式的 Java

¨ 枚举类和普通类的区别?
         1.   使用 enum 定义的枚举类默认继承了 java.lang.Enum
          2.枚举类的构造器只能使用 private 访问控制符
         3. 枚举类的所有实例必须在枚举类中显式列出 (, 分隔    ; 结尾 ). 列出的实例系统会自动添加 public static final 修饰
    ¨    4.JDK5 中扩展了 switch 语句,它除了可以接收 int ,byte, char, short 外,还可以接收一个枚举类型
¨        5. 若枚举只有一个成员 , 则可以作为一种单例模式的实现方式


¨ Java中声明的枚举类,均是java.lang.Enum类的孩子,它继承了Enum 类的所有方法。常用方法
       1.name(): 返回此枚举常量的名称,在其枚举声明中对其进行声明
       2.ordinal(): 返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)。
       3.valueof (Class enumClass ,String name): 返回带指定名称的指定枚举类型的枚举常量。 静态方法
        4.values() 此方法虽然在 JDK 文档中查找不到,但每个枚举类都具有该方法,它遍历枚举类的所有枚举值非常方便。

 案例介绍:

       ¨ 编写一个关于星期几的枚举 WeekDay ,要求:
         枚举值: Mon,Tue,Wed,Thu,Fri,Sat,Sun
          该枚举要有一个方法,调用该方法返回中文格式的星期


代码实现:


枚举类:

package util;

public enum WeekEnum {

	Mon("星期一") {
		
		//直接重写tovalue方法
		@Override
		public String tovalue() {
			// TODO Auto-generated method stub
			return "星期一";
		}

	},
	Tue("星期二") {

		@Override
		public String tovalue() {
			// TODO Auto-generated method stub
			return "星期二";
		}
	},
	Wed("星期三") {

		@Override
		public String tovalue() {
			// TODO Auto-generated method stub
			return "星期三";
		}
	},
	Thu("星期四") {

		@Override
		public String tovalue() {
			// TODO Auto-generated method stub
			return "星期四";
		}
	},
	Fri("星期五") {

		@Override
		public String tovalue() {
			// TODO Auto-generated method stub
			return "星期五";
		}
	},
	Sat("星期六") {

		@Override
		public String tovalue() {
			// TODO Auto-generated method stub
			return "星期六";
		}
	},
	Sun("星期日") {

		@Override
		public String tovalue() {
			// TODO Auto-generated method stub
			return "星期日";
		}
	};        //对象之间用 ","  隔开  以";" 结束

	//将值用final 修饰不可改变
	private final String value;

	private WeekEnum(String value) {
		this.value = value;
	}

	//将公用的方法 封装起来
	public String tovalue() {
		return "";
	}

}

                   

测试类:

package test;

import org.junit.Test;

import util.WeekEnum;

public class WeekTest {

	@Test
	public void test() {
		
    //获取WeekEnum的对象
	WeekEnum we=WeekEnum.valueOf("Mon");
	//调用内部类的tovalue方法返回“星期几的格式”
	System.out.println(we.tovalue());
	}

}





你可能感兴趣的:(enum,内部类,测试)