Java基础学习总结--枚举的简单使用

一、枚举格式
JDK1.5引入了枚举类型。枚举类型的定义包括枚举声明和枚举体。格式如下:

enum 枚举名 {
	枚举体(常量列表)
}

二、用法一:常量

enum Direction{
	FRONT,BEHIND,LEFT,RIGHT;
}

三、用法二:switch

enum Season{
	SPRING,SUMMER,AUTUMN,WINTER;
}

public class Temp {
	public static void main(String[] args) {
		int tag = new Random().nextInt(4);
		Season season = Season.values()[tag];
		
		switch (season) {
		case SPRING:
			System.out.println("春天");
			break;
		case SUMMER:
			System.out.println("夏天");
			break;
		case AUTUMN:
			System.out.println("秋天");
			break;
		case WINTER:
			System.out.println("冬天");
			break;
		}
	}
}

四、用法三:向枚举中添加成员

enum Season{
	SPRING("春天"),SUMMER("夏天"),AUTUMN("秋天"),WINTER("冬天");
	
	//成员变量
	private String name;
	public static String character;
	
	//构造方法
	private Season(String name) {
		this.name = name;
	}
	
	//普通方法
	public void sayHello() {
		System.out.println("我是"+this.name);
	}
	
	public static void show() {
		System.out.println(character);
	}
}
enum Season{
	SPRING {
		@Override
		void test() {
			
		}
	},
	SUMMER {
		@Override
		void test() {
			
		}
	},
	AUTUMN {
		@Override
		void test() {
			
		}
	},
	WINTER {
		@Override
		void test() {
			
		}
	};
	
	//抽象方法
	abstract void test();
}

五、用法四:覆盖枚举的方法

下面给出一个toString()方法覆盖的例子。

enum Season{
	SPRING,SUMMER,AUTUMN,WINTER;
	
	String msg = "跑调大叔";
	
	@Override
	public String toString() {
		return msg;
	}
}

六、用法五:实现接口

interface TestDemo{
	public void sayHello();
	public void print();
}

enum Season implements TestDemo{
	SPRING,SUMMER,AUTUMN,WINTER;
	
	//实现接口中的方法
	@Override
	public void sayHello() {
		
	}
	
	//实现接口中的方法
	@Override
	public void print() {
		
	}
}

七、注意事项

  1. 定义枚举类要用关键字enum;
  2. 所有枚举类都是Enum的子类。他们默认都是public static final修饰的;
  3. 枚举类的第一行上必须是枚举项,最后一个枚举项后的分号是可以省略的,但是如果枚举类有其他的东西,这个分号就不能省略。建议不要省略;
  4. 枚举类可以有构造器,但必须是private的,它默认的也是private的。如果有构造器,那么枚举项的用法比较特殊:枚举项("");
  5. 枚举类也可以有抽象方法,但是所有项必须重写该方法;
  6. 当你需要定义一组常量时,可以使用枚举类型。

八、补充常用方法:

name() :返回枚举的名称
ordinal() :枚举的下标,下标从0开始
valueOf(Class<T> enumType, String name) :获取枚举的对象

还有两个方法,都是这两个方法不在api里面,编译的时候生成两个方法
valueof(String name): 获取枚举对象
values(): 获得所有枚举对象数组

例1:已知枚举对象,获取枚举名称和下标

public static void test01(){
	Color c = Color.YELLOW;
	String name = c.name();
	int index = c.ordinal();
	System.out.println(name+" "+index);
}

例2:已知枚举名称,获取枚举对象和下标

public static void test02(){
	String name = "GREEN";
	Color c = Color.valueOf(name);
	int index = c.ordinal();
	System.out.println(name+" "+index);
}

例3:已知枚举下标,获取枚举对象和名称

public static void test03(){
	int index = 1;
	Color[] cs = Color.values();
	Color c = cs[index];
	String name = c.name();
	System.out.println(name+" "+index);
}

Java新手,如有错误,欢迎指正!

原文地址:https://www.cnblogs.com/Java-biao/p/12591818.html