栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

理解Java的枚举类

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

理解Java的枚举类

 

自定义枚举类
//自定义枚举类型
public class Season {

	//4.其他诉求
	@Override
	public String toString() {
		return "Season [seasonName=" + seasonName + ", seasonDesc=" + seasonDesc + "]";
	}
	public String getSeasonName() {
		return seasonName;
	}
	public String getSeasonDesc() {
		return seasonDesc;
	}
	//2.私有化构造器,并给对象属性赋值。
	private Season(String seasonName, String seasonDesc) {
		super();
		this.seasonName = seasonName;
		this.seasonDesc = seasonDesc;
	}
	//1.声明对象属性,用private,final修饰
	private final String seasonName;
	private final String seasonDesc;
	
	//3.提供当前枚举类的多个对象,public ,static ,final
	public static final Season SPRING=new Season("春天","春暖花开");
	public static final Season SUMMER=new Season("夏天","夏日炎炎");
	public static final Season AUTUMN=new Season("秋天","秋高气爽");
	public static final Season WINTER=new Season("冬天","冰天雪地");
}
测试
public class SeasonTest {

	public static void main(String[] args) {
		Season spring=Season.SPRING;
		System.out.println(spring);	
	}
}
运行结果:

 用enum定义枚举

说明:SPRING等变量的类型是属于Season2的类型

 enum Season2 {

		//3.提供当前枚举类的多个对象,public ,static ,final
		SPRING("春天","春暖花开"),
		 SUMMER("夏天","夏日炎炎"),
		AUTUMN("秋天","秋高气爽"),
		WINTER("冬天","冰天雪地");
	
//	4.其他诉求
//	@Override
//	public String toString() {
//		return "Season [seasonName=" + seasonName + ", seasonDesc=" + seasonDesc + "]";
//	}
	public String getSeasonName() {
		return seasonName;
	}
	public String getSeasonDesc() {
		return seasonDesc;
	}
	//2.私有化构造器,并给对象属性赋值。
	private Season2(String seasonName, String seasonDesc) {
		
		this.seasonName = seasonName;
		this.seasonDesc = seasonDesc;
	}
	//1.声明对象属性,用private,final修饰
	private final String seasonName;
	private final String seasonDesc;
	
	
}
测试
public class SeasonTest2 {

	public static void main(String[] args) {
		Season2 summer=Season2.SUMMER;
		//toString()
		
		System.out.println("toString:"+summer);
		System.out.println("枚举类的父类"+summer.getClass().getSuperclass());
		System.out.println("-----values----");
		Season2[] values=Season2.values();
		for(Season2 i:values) {
			System.out.println(i);
		}
		System.out.println("----线程状态-------");
		Thread.State state[]=Thread.State.values();
		for(Thread.State i:state) {
			System.out.println(i);
		}
		
		System.out.println("-----valueOf-----");
		//valueOf(Strig objName):返回枚举类中对象名是objName的对象
		//如果没有objName的枚举对象,则抛异常IllegalArgumentException
		Season2 winter=Season2.valueOf("WINTER");
		System.out.println(winter);
	}
}
运行结果:

 使用enum关键字定义枚举类实现接口的情况 情况一:实现接口,在enum中实现抽象方法 接口:
interface Info {
	void show();
}
枚举类实现接口:
 enum Season2 implements Info{

		//3.提供当前枚举类的多个对象,public ,static ,final
		SPRING("春天","春暖花开"),
		 SUMMER("夏天","夏日炎炎"),
		AUTUMN("秋天","秋高气爽"),
		WINTER("冬天","冰天雪地");
	
//	4.其他诉求
//	@Override
//	public String toString() {
//		return "Season [seasonName=" + seasonName + ", seasonDesc=" + seasonDesc + "]";
//	}
	public String getSeasonName() {
		return seasonName;
	}
	public String getSeasonDesc() {
		return seasonDesc;
	}
	//2.私有化构造器,并给对象属性赋值。
	private Season2(String seasonName, String seasonDesc) {
		
		this.seasonName = seasonName;
		this.seasonDesc = seasonDesc;
	}
	//1.声明对象属性,用private,final修饰
	private final String seasonName;
	private final String seasonDesc;
	@Override
	public void show() {
		System.out.println("这是一个季节");
	}
	
	
}
测试:
@Test
	public void test1() {
		Season2.SUMMER.show();
		Season2.SPRING.show();
		Season2.AUTUMN.show();
		Season2.WINTER.show();
	}
运行结果:

 情况二:让枚举类的对象分别实现接口中的抽象方法 枚举类:
 enum Season2 implements Info{

		//3.提供当前枚举类的多个对象,public ,static ,final
		SPRING("春天","春暖花开"){
			@Override
			public void show() {
				System.out.println("春天在哪里?");
			}
		},
		 SUMMER("夏天","夏日炎炎"){
			@Override
			public void show() {
				System.out.println("宁静的夏天");	
			}
		},
		AUTUMN("秋天","秋高气爽"){
			@Override
			public void show() {
				System.out.println("秋天不回来");
			}
		},
		WINTER("冬天","冰天雪地"){
			@Override
			public void show() {
				System.out.println("大约在冬季");
			}
		};
	
//	4.其他诉求
//	@Override
//	public String toString() {
//		return "Season [seasonName=" + seasonName + ", seasonDesc=" + seasonDesc + "]";
//	}
	public String getSeasonName() {
		return seasonName;
	}
	public String getSeasonDesc() {
		return seasonDesc;
	}
	//2.私有化构造器,并给对象属性赋值。
	private Season2(String seasonName, String seasonDesc) {
		
		this.seasonName = seasonName;
		this.seasonDesc = seasonDesc;
	}
	//1.声明对象属性,用private,final修饰
	private final String seasonName;
	private final String seasonDesc;
	
}
测试:
@Test
	public void test1() {
		Season2.SUMMER.show();
		Season2.SPRING.show();
		Season2.AUTUMN.show();
		Season2.WINTER.show();
		
		System.out.println("------for-----");
		Season2[] values = Season2.values();
		for(int i=0;i 
运行结果: 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/995897.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号