黑马程序员——枚举

本文深入探讨了Java枚举的定义与使用,包括枚举的基本语法、如何利用枚举实现接口和定义抽象方法等内容,并介绍了枚举与集合类如EnumSet和EnumMap的交互方式。

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

package com.itheima.zqt;
enum Color{
	RED,GREEN,YELLOW;//定义枚举的三个类型
}
public class EnumDemo{
	public static void main(String[] args) {
		Color c = Color.RED;   //取得类型
		System.out.println(c);
		Color[] values = Color.values();    //获得全部枚举类型
		for (Color color : values) {   
			System.out.println(color);
			switch (color) {// enum 在switch中的使用 
			case RED:
				System.out.println("红色");
				break;
			case GREEN:
				System.out.println("绿色");
				break;
			case YELLOW:
				System.out.println("黄色");
				break;
			default:
				break;
			}
		}
	}
}

通过构造方法为属性赋值

package com.itheima.zqt;
enum Color{
	RED("红色"),GREEN("绿色"),YELLOW("黄色");
	private Color(String name) {
		this.setName(name);
	}
	private String name;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}
public class EnumDemo{
	public static void main(String[] args) {
		for (Color c :Color.values()) {
			System.out.println(c.ordinal()+"->"+c.name()+":"+c.getName()); //获得枚举常量的序号和名称
		}
		Color c = Enum.valueOf(Color.class,"GREEN");//通过反射的方式获得获得枚举类的对象
		System.out.println(c.name());
	}
}

enum关键字表示的是java.lang.Enum类型,使用enum 相当于定义一个类,此类默认继承java.lang.Enum,可以使用比较器和序列化操作

public abstract class Enum<E extends Enum<E>>
        implements Comparable<E>, Serializable {

在Enum类中的定义中已经实现好了Compareable接口,根据ordinal 属性排序。

enum Color{
	RED,GREEN,YELLOW;
}
public class EnumDemo{
	public static void main(String[] args) {
		Set<Color> t = new TreeSet<Color>();
		t.add(Color.YELLOW);
		t.add(Color.GREEN);
		t.add(Color.RED);
		Iterator<Color> iterator = t.iterator();
		while (iterator.hasNext()) {
			System.out.println(iterator.next());
		}
	}
}
运行结果:

RED
GREEN
YELLOW

EnumMap 和EnumSet

EnumMap 是java.uitl.Map接口的一个特殊实现,他的key是一个枚举类型

enum Color{
	RED,GREEN,YELLOW;
}
public class EnumDemo{
	public static void main(String[] args) {
		Map<Color,String> desc = null;
		desc = new EnumMap<Color, String>(Color.class);
		desc.put(Color.RED, "红色");
		desc.put(Color.GREEN, "绿色");
		desc.put(Color.YELLOW, "黄色");
		System.out.println("输出全部枚举");
		for (Color c : Color.values()) {
			System.out.println(c.name()+"->"+desc.get(c));
		}
		System.out.println("输出全部键值");
		for (Color c : desc.keySet()) {
			System.out.print(c.name()+" ");
		}
		System.out.println();
		System.out.println("输出全部value");
		for (String string : desc.values()) {
			System.out.print(string+" ");
		}
	}
}
运行结果:

输出全部枚举
RED->红色
GREEN->绿色
YELLOW->黄色
输出全部键值
RED GREEN YELLOW 
输出全部value
红色 绿色 黄色 
EnumSet是Set接口的子类,内容不能重复,EnumSet不能使用new实例化,所以此类提供了静态方法

enum Color{
	RED,GREEN,YELLOW;
}
public class EnumDemo{
	public static void main(String[] args) {
		EnumSet<Color> es = null;
		es = EnumSet.allOf(Color.class); //将枚举的全部属性设置到EnumSet对象中
		print(es);
		es = EnumSet.of(Color.GREEN); //设置一个枚举的内容
		print(es);
		es = EnumSet.noneOf(Color.class);  // 只能加入Color类型的集合
		es.add(Color.GREEN);
		es.add(Color.YELLOW);
		print(es);
		EnumSet<Color> esNew = EnumSet.complementOf(es);//创建一个不包含指定元素的集合
		print(esNew);
		esNew = EnumSet.copyOf(es); //从已有集合中复制出内容
		print(esNew);
	}
	public static void print(EnumSet<Color> es){
		for (Color color : es) {
			System.out.println(color);
		}
		System.out.println("——————————————");
	}
}

枚举类实现一个接口

必须对枚举类中的每个对象分别实现接口中的方法

interface Print{
	public String getColor() ;
}
enum Color implements Print{
	RED{
		public String getColor(){
			return "红色" ;
		}
	},GREEN{
		public String getColor(){
			return "绿色" ;
		}
	},BLUE{
		public String getColor(){
			return "蓝色" ;
		}
	} ;
}
public class InterfaceEnumDemo{
	public static void main(String args[]){
		for(Color c:Color.values()){
			System.out.print(c.getColor() + "、") ;
		}
	}
};
在枚举类中定义抽象方法

每个枚举的对象分别实现抽象方法

enum Color {
	RED{
		public String getColor(){
			return "红色" ;
		}
	},GREEN{
		public String getColor(){
			return "绿色" ;
		}
	},BLUE{
		public String getColor(){
			return "蓝色" ;
		}
	} ;
	public abstract String getColor() ;
}
public class AbstractMethodEnum{
	public static void main(String args[]){
		for(Color c:Color.values()){
			System.out.print(c.getColor() + "、") ;
		}
	}
};



标题基于SpringBoot的马术俱乐部管理系统设计与实现AI更换标题第1章引言介绍马术俱乐部管理系统的研究背景、意义、国内外研究现状、论文方法及创新点。1.1研究背景与意义阐述马术俱乐部管理系统对提升俱乐部管理效率的重要性。1.2国内外研究现状分析国内外马术俱乐部管理系统的发展现状及存在的问题。1.3研究方法以及创新点概述本文采用的研究方法,包括SpringBoot框架的应用,以及系统的创新点。第2章相关理论总结和评述与马术俱乐部管理系统相关的现有理论。2.1SpringBoot框架理论介绍SpringBoot框架的基本原理、特点及其在Web开发中的应用。2.2数据库设计理论阐述数据库设计的基本原则、方法以及在管理系统中的应用。2.3马术俱乐部管理理论概述马术俱乐部管理的基本理论,包括会员管理、课程安排等。第3章系统设计详细描述马术俱乐部管理系统的设计方案,包括架构设计、功能模块设计等。3.1系统架构设计给出系统的整体架构,包括前端、后端和数据库的交互方式。3.2功能模块设计详细介绍系统的各个功能模块,如会员管理、课程管理、预约管理等。3.3数据库设计阐述数据库的设计方案,包括表结构、字段设计以及数据关系。第4章系统实现介绍马术俱乐部管理系统的实现过程,包括开发环境、编码实现等。4.1开发环境搭建介绍系统开发所需的环境,包括操作系统、开发工具等。4.2编码实现详细介绍系统各个功能模块的编码实现过程。4.3系统测试与调试阐述系统的测试方法、测试用例以及调试过程。第5章系统应用与分析呈现马术俱乐部管理系统的应用效果,并进行性能分析。5.1系统应用情况介绍系统在马术俱乐部中的实际应用情况。5.2系统性能分析从响应时间、并发处理能力等方面对系统性能进行分析。5.3用户反馈与改进收集用户反馈,提出系统改进建议。第6章结论与展望总结马术俱乐部管理系统的设计与实现成果,并展望未来的研究
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值