Java_enum

java的enum,就我现在所知道的,enum常用在规范和约束方法的运行时参数这方面。

package com.wangbiao.test;

/**
 * 
 * enum总结
 * 
 * @author WangBiao
 *2013-5-6下午03:38:53
 */
enum Color{
	RED, BULE, GREEN;
}

//enum的构造方法,普通方法,属性,抽象方法
//enum的值就是enum的实例,并且它的构造方法必须是private
enum Grade{
	A("90~100") {
		@Override
		public String getLocalValue() {
			return "优秀";
		}
	},B("80~90") {
		@Override
		public String getLocalValue() {
			return "良好";
		}
	},C("70~80") {
		@Override
		public String getLocalValue() {
			return "中等";
		}
	},D("0~70") {
		@Override
		public String getLocalValue() {
			return "差";
		}
	};
	
	private String value="";
	 private Grade(String value) {
		 this.value=value;
	}
	 public String getValue(){
		return value;
	 }
	@Override
	public String toString() {
		return "分數為"+this.value+"  等級為"+this.name()+" 综合评定为"+this.getLocalValue();
	}
	 
	 public abstract String getLocalValue();
}

public class TestEnum {
	
	
	public static void test_first(Color color) {
		// int char enum
		switch (color) {
		case RED:
			System.out.println("红色");
			break;
		case BULE:
			System.out.println("蓝色");
			break;
		case GREEN:
			System.out.println("绿色");
			break;
		default:
			System.out.println("没有这个颜色");
			break;
		}

	}

	public static void test_second(Grade g,Grade g_diff){
		//name()
		//ordinal()
		//valueOf(String arg)
		//compareTo();比较声明常量的顺序,必须是同一enum类型才可以比较,否则会报异常
		System.out.println(g.compareTo(g_diff));
		System.out.println(g.name()+"-"+g.ordinal());
		//get enum by String
		Grade new_g=Grade.valueOf(Grade.class,"A");
		System.out.println(new_g.name()+"-"+new_g.ordinal());
		//values()
		Grade[] grades=Grade.values();
		for (Grade grade : grades) {
			System.out.println(grade);
		}
		//getDeclaringClass()返回枚举常量的枚举类型
		Class<?> c=g.getDeclaringClass();
		System.out.println(c.getName());
	}
	
//	枚举类型可以规范和约束运行时程序函数入参;
//	枚举其实就是一个特殊的Class; 
//	Object 有的方法他都有,因为它是Object 的子类; 
//	 枚举类型其实是一个final 类型的类,所以他不能被继承;
//	 枚举类型不仅可以定义枚举值,它还可以定义构造函数,方法以及属性字段;
//	 枚举类型的构造函数必须是私有的;
//	 枚举类型允许有抽象函数
     
	public static void main(String[] args) {
		Color c=Color.BULE;
		//test_first(c);
		
		Grade g=Grade.A;
		Grade g_new=Grade.B;
		test_second(g_new,g);
	}
}

你可能感兴趣的:(java,enum)