Java中的枚举

enum Season {
	// 枚举列表,必须写在顶部(实际上就是实例化对象的过程)
	SPRING("春天", "春暖花开"),
	SUMMER("夏天", "夏日炎炎"),
	AUTUMN("秋天", "秋高气爽"),
	WINTER("冬天", "白雪皑皑");

	// 声明枚举对象属性(私有常量)
	private final String seasonName;
	private final String seasonDesc;
	
	// 构造器设置为私有,禁止实例化对象
	private Season(String seasonName, String seasonDesc) {
		this.seasonName = seasonName;
		this.seasonDesc = seasonDesc;
	}

	// getter
	public String getSeasonName() {
		return this.seasonName;
	}
	
	// getter
	public String getSeasonDesc() {
		return this.seasonDesc;
	}
	
	// 重写toString,不重写的话返回常量名字,比如“SPRING”
	public String toString() {
		return "Season{" + "seasonName='" + seasonName + '\'' +", seasonDesc='" + seasonDesc + '\''+'}';
	}
}
class Test {
	public static void main(String[] args) {
		System.out.println(Season.SPRING); // 默认调用toString方法
		System.out.println(Season.SPRING.getSeasonName());
		System.out.println(Season.SPRING.getSeasonDesc());
	}
}

说明

  1. Season.SPRING.name();Season.SPRING; // 默认toString方法打印的都是常量名字“SPRING”

  2. Season.values()方法可以获取所有的枚举对象(数组)

  3. Season.valueOf("SPRING")可以获取指定常量名的对象,如果传入的常量找不到对象,则会报错

  4. Season.WINTER.ordinal()可以获取当前对象的索引3

  5. 枚举也可以实现接口,可以在类中去重写接口的方法,也可以单独在每个枚举对象中重写接口的方法

    interface IShow {
    	void show();
    }
    enum Season implements IShow{
    	SPRING("春天", "春暖花开"){
    		public void show() {
    			System.out.println("这是SPRING重写的show方法");
    		}
    	},
    	SUMMER("夏天", "夏日炎炎"){
    		public void show() {
    			System.out.println("这是SUMMER重写的show方法");
    		}
    	},
    	AUTUMN("秋天", "秋高气爽"){
    		public void show() {
    			System.out.println("这是AUTUMN重写的show方法");
    		}
    	},
    	WINTER("冬天", "白雪皑皑"){
    		public void show() {
    			System.out.println("这是WINTER重写的show方法");
    		}
    	};
    	public void show() {
    		System.out.println("四个枚举对象公用这一个方法");
    	}
    }
    

枚举类简写方式:如果没有额外的描述字段,可以直接简写成下面这样

enum Status {
	BUSY, FREE, VOCATION, DIMISSION;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值