JDK1.5以后添加的枚举类型

首先,枚举的使用场景:

在我们在需要群组并使用枚举类型集的时候,可以很方便的处理。

1.创建一个枚举类型

public enum Spiciness {
	TIRED,CAN,STILL,MY,HEART
}

创建了一个名为Spiciness的枚举类型,具有5个常量值。因为枚举类型的实例都是常量值,按照惯例,写为大写。

2.使用枚举的实例

class Test1{
	public static void main(String[] args) {
		Spiciness s =Spiciness.HEART;
		System.out.println(s);
	}
}

需要注意的地方:

在创建枚举类型的时候,编译器会自动添加一些枚举所拥有的特性。

eg:创建toString()方法。创建ordinal()方法----用来表示某个特定常量的声明顺序。还有就是values()方法(静态的),这个方法用来按照enum常量的声明顺序,产生由这些常量值构成的数组。此数组可以遍历。具体如下

public static void main(String[] args) {
		for (Spiciness s : Spiciness.values()) {
			System.out.println("s:"+s+s.ordinal());
		}
	}

尽管enum看起来是一种新的数据类型,但是它的确是一个类,并且有自己的方法。

常用实例

即你可以声明一个enum类型,Spiciness s;然后当switch括号里面需要判断的时候将声明的枚举类型传入进去,依次使用case来选择。

例子:自己写一个枚举类型

请看代码段

public enum systemResult {
	/**
	 * 成功
	 */
	Success(0),
	/**
	 */
	Failed(-1);
	/**
	 * 定义枚举值
	 */
	private int value;
	private systemResult(int value) {
		this.value = value;
	}
	
	/**
	 * 拿到value的方法
	 */
	public int getValue() {
		return value;
	}
	/**
	 * 将一个值转化为枚举值
	 */
	public static systemResult toEnum(int a) {
		switch(a) {
		case 0: return Success;
		case 1: return Failed;
		default: throw new IllegalArgumentException("不可识别的值"+a);
		}
	}
	
}

要注意的几点

①:枚举类型的构造函数是私有化的。

②:Success(0);这句话就是利用了私有化的构造函数。

③:经典使用场景,也就是上面代码的toEnum函数,传进来一个int类型的值,然后用switch进行判断。

猜你喜欢

转载自blog.csdn.net/zy934236179/article/details/81163038