黑马程序员_Java基础加强_枚举

本文深入探讨了Java枚举类型的实现机制,通过具体示例解释了枚举的构造方法私有化、静态实例对象及常用方法的用法,并对比了不同实现方式的优劣,帮助开发者更全面地理解并应用Java枚举。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

一直都想在博客中记录自己学习的点点滴滴,但是每当开始书写的时候,就不知道从何写起(亲们,你们有类似的感觉吗?);其实Java的枚举就相当于这样的一个Java普通类,构造方法私有化,提供几个本类的静态的实例对象。

枚举的常用方法:

package com.itheima.enumstudy;

import java.util.HashMap;
import java.util.Map;
/**
 * 枚举类型的基本使用 
 */
public class EnumDemo {

	public static void main(String[] args) {
		System.out.println(MyEnum.SUN.nextDay());
		System.out.println(MyEnum1.SUN.nextDay());
	}
	
}
/**
 * 定义自己的枚举类型
 * 星期枚举,获取下一天是星期几
 */
enum MyEnum{
	SUN(0),MON(1),TUE(2),WED(3),THU(4),FRI(5),SAT(6);
	private int dayNum;
	private static Map<Integer,MyEnum> map = new HashMap<Integer,MyEnum>();
	private MyEnum(int dayNum){
		this.dayNum = dayNum;
	}
	static{
		for(MyEnum en : MyEnum.values()){
			map.put(en.dayNum, en);
		}
	}
	public MyEnum nextDay(){
		int nextDayNum = (this.dayNum+1)%7;
		return map.get(nextDayNum);
	}
	
}
//两种方式,不知道那种方式更好呢?
enum MyEnum1{
	SUN{
		@Override
		public MyEnum1 nextDay() {
			return MON;
		}
	},
	MON{
		@Override
		public MyEnum1 nextDay() {
			return TUE;
		}
	},
	TUE{
		@Override
		public MyEnum1 nextDay() {
			return WED;
		}
	},
	WED{
		@Override
		public MyEnum1 nextDay() {
			return THU;
		}
	},
	THU{
		@Override
		public MyEnum1 nextDay() {
			return FRI;
		}
	},
	FRI{
		@Override
		public MyEnum1 nextDay() {
			return SAT;
		}
	},
	SAT{
		@Override
		public MyEnum1 nextDay() {
			return SUN;
		}
	};
	private MyEnum1(){}
	//带有抽象方法的枚举
	public abstract MyEnum1 nextDay();
}
上述两种方式都能实现获取给定星期几的下一天,但是不知道哪种方式是更好的,就我个人而言,比较喜欢第一种方式,因为代码短。。因为对于Java枚举的理解不是太深,所以先看下枚举的values()方法的底层实现,但是很遗憾,在代码中没能看到values()方法,经过查询资料好像是说values()方法是编译器自动添加的方法(你怎么看?)。


---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

详细请查看:http://edu.youkuaiyun.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值