JAVA 枚举类的初步理解

JAVA 枚举类的初步理解
现在Java的枚举类在真实项目中已经用的比较频繁,比静态常量更好用,也更有限定性,enum类可以用来表示有限的类对象,比如星期、月份、性别或者项目中的产品类型 像诸如此类的数量比较少可数的时候可以用枚举类型,下面我们就来看个来初步理解Java的枚举类。
package com.lcx.enum_test;
/**
 * 
 * 性别枚举类
 * @author qq1013985957
 *	
 */
public enum Gender {
	/**
	 * 枚举类其实和普通类很相似,只不过枚举类只能定义可数的枚举对象,多次调用Gender.MAN返回的是同一个对象。
	 * 此处就是可数的枚举对象,要匹配构造器,实现抽象方法。
	 */
	MAN("man","男人","man people"){
		@Override
		public void saySelf() {
			System.out.println("我是一个真正的男人啊");
		}
	},WOMAN("woman","女人","woman people"){
		@Override
		public void saySelf() {
			System.out.println("我是一个真正的女人啊");
		}
	},GAY("gay","同性恋","gay people"){
		@Override
		public void saySelf() {
			System.out.println("请你们尊重我们同性恋");
		}
	};
	/**
	 * 模仿普通类
	 * 1、和普通类一样可以拥有静态成员
	 * 2、可以用普通成员和普通方法,但是枚举类只能拥有私有构造器,这样只能在本类中进行调用,也就是限定的枚举对象处。
	 * 3、也可以拥有抽象方法,那么枚举对象处必须重写抽象方法,才能实例化对象。
	 */
	public static final String INFO = "我是性别的枚举类";
	public static void test(){
		System.out.println("我是测试方法");
	}
	static{
		System.out.println(INFO);
		test();
	}
	//一般项目开发中,枚举类型的私有变量都都只提供get方法,枚举值设定在构造器调用的地方设置。
	private String genderKind;
	private String genderInfoCn;
	private String genderInfoEn;
	
	private Gender(String genderKind, String genderInfoCn, String genderInfoEn) {
		this.genderKind = genderKind;
		this.genderInfoCn = genderInfoCn;
		this.genderInfoEn = genderInfoEn;
	}
	public String getGenderKind() {
		return genderKind;
	}
	public void setGenderKind(String genderKind) {
		this.genderKind = genderKind;
	}
	public String getGenderInfoCn() {
		return genderInfoCn;
	}
	public void setGenderInfoCn(String genderInfoCn) {
		this.genderInfoCn = genderInfoCn;
	}
	public String getGenderInfoEn() {
		return genderInfoEn;
	}
	public void setGenderInfoEn(String genderInfoEn) {
		this.genderInfoEn = genderInfoEn;
	}
	public abstract void saySelf();
}
下面我们来看下枚举对象的API
下面我来看下测试方法:

package com.lcx.enum_test;
/**
 * 
 * 枚举测试类
 * 
 * @author qq1013985957
 *
 */
public class EnumTest {


	public static void main(String[] args) {
		Gender man = Gender.MAN;
		Gender woman = Gender.WOMAN;
		Gender gay = Gender.GAY;
		//Gender.MAN = Gender.WOMAN; 此处编译报错,由于枚举对象实际上由static final修饰的
		Gender man1 = Gender.MAN;
		System.out.println("------------多次调用同一个枚举对象-------------");
		System.out.println(man.hashCode());
		System.out.println(man1.hashCode());
		System.out.println("------------枚举很多时候用在switch语句中-------------");
		genderDo(man);
		genderDo(woman);
		genderDo(gay);
		System.out.println("------------根据字符串获取枚举对象,调用枚举对象的普通成员方法-------------");
		Gender man_ = Gender.valueOf("MAN");
		System.out.println(man_.getGenderInfoCn());
		man_.setGenderInfoCn("地球上的男人");
		System.out.println(man_.getGenderInfoCn());
		System.out.println("------------获取所有枚举对象,并遍历-------------");
		for(Gender g : Gender.values()){
			g.saySelf();
		}
		
	}
	/**
	 * 枚举很多时候用在switch语句中
	 * @param gender
	 */
	public static void genderDo(Gender gender){
		switch (gender) {
		case MAN:
			System.out.println("男人就是应该对妻子好一点");
			break;
		case WOMAN:
			System.out.println("女人就是应该相夫教子");
			break;
		case GAY:
			System.out.println("同性恋也应该得到祝福");
			break;
		default:
			break;
		}
	}


}
测试结果:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值