Java枚举类

枚举类入门java

    枚举类是一种特殊的类,它同样能够有本身的方法和属性,能够实现一个或者多个接口,也能够定义本身的构造器。ide

枚举类与普通类的区别:函数

  • 使用enum定义的枚举类默认继承了java.lang.Enum类,而不是继承Object类;this

  • 枚举类的构造器只能使用private访问控制符,若是省略了其构造器的访问控制符,则默认使用用private修饰;spa

  • 枚举类的全部实例必须在枚举中显式列出,不然这个枚举类将永远都不能产生实例。code

java.lang.Enum类中提供了以下几个方法:
对象

  • int compareTo(E o):该方法用于与指定枚举对象比较顺序,同一个枚举实例只能与相同类型的枚举实例进行比较。若是该枚举对象位于指定枚举对象以后,则返回正整数;反之,则返回零。继承

  • String name():返回此枚举实例的名称,这个名称就是定义枚举类时列出的全部枚举值之一。应该优先考虑使用toString()方法,由于toString()方法返回更加用户友好的名称。索引

  • int ordinal():返回枚举值在枚举类中的索引值(就是枚举值在枚举声明中的位置,第一枚举值的索引值为零)。接口

  • String toString():返回枚举常量的名称。

  • public static <T extends Enum<T>> T valueOf(Class<T> enumType,String name):用于返回指定枚举类中指定名称的枚举值。名称必须与在该枚举类中声明枚举时所用的标识符彻底匹配,不容许使用额外的空白字符。

枚举类的使用

  一、枚举类型的简单定义方法以下:

public enum Season {
	SPRING,SUMMER,FALL,WINTER;
}

这样定义只可以表示出春、夏、秋、冬,可是具体的值没有表示出来。不过枚举类型提供了构造函数,能够经过构造函数和覆写toString方法来实现。改造后的代码:

public enum Season {

	SPRING(1),SUMMER(2),FALL(3),WINTER(4);
	
	// 定义私有变量
	private int value;
	
	private Season(int value) {
		this.value = value;
	}
	
	@Override
	public String toString() {
		return String.valueOf(value);
	}
}

  二、包含方法的枚举类

public enum Season {

	SPRING(1), SUMMER(2), FALL(3), WINTER(4);

	// 定义私有变量
	private int value;

	private Season(int value) {
		this.value = value;
	}

	@Override
	public String toString() {
		return String.valueOf(value);
	}

	public Season next() {
		Season season = null;
		switch (this) { // 表明枚举的一个值
			case SPRING:
				season = SUMMER;
				break;
			case SUMMER:
				season = FALL;
				break;
			case FALL:
				season = WINTER;
				break;
			case WINTER:
				season = SPRING;
				break;
		}
		return season;
	}
}

  三、包含抽象方法的枚举类

public enum Season {

	SPRING(1) {
		public Season next() {
			return SUMMER;
		}
	},
	SUMMER(2) {
		public Season next() {
			return FALL;
		}
	},
	FALL(3) {
		public Season next() {
			return WINTER;
		}
	},
	WINTER(4) {
		public Season next() {
			return SPRING;
		}
	};
	
	// 定义私有变量
	private int value;
	
	private Season(int value) {
		this.value = value;
	}
	
	@Override
	public String toString() {
		return String.valueOf(value);
	}
	
	// 为枚举类定义一个抽象方法,这个抽象方法由不一样枚举值提供不一样的事项
	public abstract Season next();
}
相关文章
相关标签/搜索