天天看点

Java中的枚举类励志语录枚举类介绍自定义枚举类用enum关键字定义枚举类枚举类的方法枚举类实现接口

Java中的枚举类

  • 励志语录
  • 枚举类介绍
  • 自定义枚举类
  • 用enum关键字定义枚举类
  • 枚举类的方法
  • 枚举类实现接口

励志语录

永不言败,是成功者的最佳品格。

枚举类介绍

什么是枚举类?可以认为如果一个类的对象是有限可数的时,那么我们就称这种类为枚举类

自定义枚举类

根据之前学到的知识,我们可以推得枚举类应该有一下几个特点:

  • 构造器用

    private

    修饰
  • 在类中创建有限个该类的对象
  • 该类对象用

    final

    static

    修饰
  • 该类中对象的属性应为

    final

  • 提供实例变量的get方法

代码示例:

class Session{
	private final String sessionName;
	
	private Session(String sessionName){
		this.sessionName = sessionName;
	}
	
	public final static Session STRING = new Session("春天");
	public final static Session SUMMER = new Session("夏天");
	public final static Session AUTUNM = new Session("秋天");
	public final static Session WINNER = new Session("冬天");

	public String getSessionName() {
		return sessionName;
	}
}
           

用enum关键字定义枚举类

JDK5.0发布了enum关键字,大大减少了枚举类的代码量

与上面相同意义的代码(用enum):

enum Session{
	SPRING("春天"),SUMMER("夏天"),AUTUNM("秋天"),WINTER("冬天");
	private final String sessionName;
	private Session(String sessionName){
		this.sessionName = sessionName;
	}
	public String getSessionName() {
		return sessionName;
	}
	
}
           

不过有几个需要注意的点:

  1. 该类中的对象实例依次列出用逗号分隔;
  2. 对象实例列出必须在第一行
  3. 该类默认继承java.lang.Enum,因此不能继承其他类

枚举类的方法

  • values():该方法返回一个对象数组,对象数组中封装着枚举类中所有的对象
  • valueOf(String str):该方法可以根据对象名,返回对象,如果对象名不存在,会运行时异常:IllegalArgumentException。(对象名严格遵守大小写)

枚举类实现接口

当枚举类实现一个接口后,除了枚举类可以重写接口中的抽象方法外,每一个示例也可以重写接口中的抽象方法

代码示例:

interface MyInterface{
	void show();
} 

enum Session1 implements MyInterface{
	SPRING("春天"){
		@Override
		public void show(){
			System.out.println("我是春天");
		}
	},SUMMER("夏天"){
		@Override
		public void show(){
			System.out.println("我是夏天");
		}
	},AUTUNM("秋天"){
		@Override
		public void show(){
			System.out.println("我是秋天");
		}
	},WINTER("冬天"){
		@Override
		public void show(){
			System.out.println("我是冬天");
		}
	};
	private final String sessionName;
	private Session1(String sessionName){
		this.sessionName = sessionName;
	}
	public String getSessionName() {
		return sessionName;
	}
	@Override
	public void show() {
		// TODO Auto-generated method stub
		System.out.println("我是季节");
	}
	
}