JAVA——枚举类

这是我参与更文挑战的第12天,活动详情查看: 更文挑战

枚举类入门

枚举类的定义

枚举类使用enum(它与class、interface关键字地位相同)关键字定义。一个java源文件中只能有一
个public修饰的枚举类,且java源文件也必须和枚举类的类名相同。

下面来定义一个枚举类:

public enum TestDemo{
	SPRING,SUMMER,FALL,WINTER
}
是不是很简单。
复制代码

枚举类和普通类的区别

1. 枚举类可以实现一个或多个接口,使用eunm定义的类默认继承了java.lang.Enum类,而不是默认
继承Object类,因此枚举类不能显示继承其他父类。其中java.lang.Enum类实现了
java.lang.Serializable和java.lang.Comparable接口
2. 非抽象的枚举类默认会使用final修饰,因此枚举类不能派生子类。
3. 枚举类的构造器只能使用private修饰,如果省略,系统默认使用private修饰。
4. 枚举类的每一个实例必须显示声明,每个实例使用逗号隔开。
复制代码

枚举类的方法

枚举类默认有如下方法:

values()方法   该方法可以很方便的遍历所有的枚举值
/**
 * @Author Gw_gw
 * @Date 2021/6/12 18:50
 * @Version 1.0
 */
public class  TestDemo{
	public static void main(String[] args) {
		//使用values()方法来遍历枚举类的值
		for(Season i : Season.values()){
			System.out.println(i);
		}
	}
}
/**
 * 枚举类表示四季
 */
enum Season{
	/**
	 * 春夏秋冬
	 */
	SPRING,SUMMER,FALL,WINTER;
}
复制代码
ordinal()方法可以找到每个枚举常量的索引,就像数组索引一样。

public class  TestDemo{
	public static void main(String[] args) {
		//使用values()方法来赋值
		Season[] season = Season.values();
		for(Season i : season){
			System.out.println(i+"的索引是"+i.ordinal());
		}
	}
}
复制代码
valueOf()方法返回指定字符串值的枚举常量。不存在的会报错 IllegalArgumentException

public class  TestDemo{
	public static void main(String[] args) {
		// 使用 valueOf() 返回枚举常量,不存在的会报错 IllegalArgumentException
		System.out.println(Season.valueOf("SPRING"));
		//error  IllegalArgumentException
		System.out.println(Season.valueOf("asd"));
	}
}
复制代码
compareTo(E o)方法  指定枚举对象的比较顺序。如果枚举对象在指定枚举对象之后返回正整数,之
前返回正整数,否则返回0

public class  TestDemo{
	public static void main(String[] args) {
		//返回-1
		System.out.println(Season.SPRING.compareTo(Season.SUMMER));
	}
}
复制代码
String name() :返回此枚举实例的名称
String toString():返回枚举常量的名称
toString()方法更常用

public class  TestDemo{
	public static void main(String[] args) {
		System.out.println(Season.SPRING.name());
		System.out.println(Season.SPRING.toString());
		//实质就是调用toString()方法
		System.out.println(Season.SPRING);
	}
}
复制代码

枚举类的成员变量和构造器

枚举跟普通类一样可以用自己的变量、方法和构造函数,构造函数只能使用 private 访问修饰符,所
以外部无法调用。
枚举既可以包含具体方法,也可以包含抽象方法。 如果枚举类具有抽象方法,则枚举类的每个实例都
必须实现它。

public class  TestDemo{
	public static void main(String[] args) {
		Season season = Season.SPRING;
		season.print();
	}
}
/**
 * 枚举类表示四季
 */
enum Season{
	/**
	 * 春夏秋冬
	 */
	SPRING,SUMMER,FALL,WINTER;
	private Season(){
		System.out.println(this);
	}
	public void print(){
		System.out.println("这是季节枚举");
	}
}

复制代码

上面的例子大家可以自己亲自动手运行一下,这里就不在给出运行结果,大家亲自动手实践,探索java枚举类的神秘吧!

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享