枚举

      枚举是JDK 1.5之后增加的一个主要新功能,利用枚举可以简化多例设计模式(一个类只能够产生固定几个实例化对象)的定义,同时在Java中的枚举也可以像普通类那样定义属性、构造方法、实现接口等

 

       Ø 枚举主要用于定义一组可以使用的类对象,这样在使用时只能够使用固定的几个对象来进行类的操作。这样的操作形式在实际生活中非常的多:

      Ø 如果要表示日期的对象,那么只能够有以下几种定义:SUNDAY(星期日)、MONDAY(星期一)、TUESDAY(星期二)、WEDNESDAY(星期三)、THURSDAY(星期四)、FRIDAY(星期五)、SATURDAY(星期六);

       Ø  从JD K1.5开始,专门提供了一个新的关键字:enum,利用enum关键字就可以定义枚举类型。

 

定义颜色的枚举类

enum Color { 					// 定义枚举类
	RED, GREEN, BLUE; 				// 表示此处为实例化对象
}
public class TestDemo {
	public static void main(String[] args) {
		Color red = Color.RED;		// 直接取得枚举对象
		System.out.println(red);
	}
}

Enum类

枚举只需要使用enum关键字就可以定义,但是严格来讲,枚举只是类结构的加强而已。因为在Java中使用enum定义的枚举类就相当于默认继承了java.lang.Enum类,此类定义如下

public abstract class Enum<Eextends Enum<E>>

extends Object

implements Comparable<E>,Serializable

Enum类定义的方法

返回枚举中的全部内容

enum Color { 			// 定义枚举类
	RED, GREEN, BLUE; 	// 表示此处为实例化对象
}
public class TestDemo {
	public static void main(String[] args) {
		for(Color c : Color.values()) {
			System.out.println(c.ordinal() + " - " + c.name());
		}
	}
}

程序执行结果:

0 - RED

1 - GREEN

2 – BLUE

枚举中定义其它结构

       Ø  按照之前所理解,枚举就属于多例设计模式,那么既然是多例设计模式,对于类之中就肯定有多种组成,包括属性、方法、构造方法,在枚举之中也同样可以定义以上的内容,但是此处需要注意两点问题:

       Ø  枚举之中定义的构造方法不能够使用public声明,如果没有无参构造,请手工调用构造传递参数;

   

       Ø  枚举对象必须要放在首行,随后才可以定义属性、构造、普通方法等结构。

 

扩充枚举功能

   
enum Color {
	RED("红色"), GREEN("绿色"), BLUE("蓝色");		// 定义枚举对象,必须写在首行
	private String title; 			// 属性
	private Color(String title) {		// 构造方法,不能使用public声明
		this.title = title;
	}
	public String toString() {			// 覆写toString()方法
		return this.title;
	}
}
public class TestDemo {
	public static void main(String[] args) {
		for (Color c : Color.values()) {	// 取得全部枚举对象
			System.out.print(c + "、"); 	// 直接输出对象调用toString()
		}
	}
}

枚举实现接口

interface IMessage {
	public String getTitle() ;
}
enum Color implements IMessage {		// 实现接口
	RED("红色"), GREEN("绿色"), BLUE("蓝色");		// 定义枚举对象,都是IMessage接口实例
	private String title; 		// 属性
	private Color(String title) {	// 构造方法,不能使用public声明
		this.title = title;
	}
	public String getTitle() {		// 覆写方法
		return this.title ;
	}
	public String toString() {		// 覆写toString()方法
		return this.title;
	}
}
public class TestDemo {
	public static void main(String[] args) { 
		IMessage msg = Color.RED ;	// 实例化接口对象
		System.out.println(msg.getTitle());
	}
}

在switch语句上使用枚举

enum Color {
	RED, GREEN, BLUE;
}
public class TestDemo {
	public static void main(String[] args) {
		Color c = Color.RED;
		switch (c) { 		// 支持枚举判断
			case RED:		// 判断枚举内容
				System.out.println("这是红色!");
				break;
			case GREEN:		// 判断枚举内容
				System.out.println("这是绿色!");
				break;
			case BLUE:		// 判断枚举内容
				System.out.println("这是蓝色!");
				break;
		}
	}
}

在类设计结构中使用枚举

enum Sex {
	MALE("男"),FEMALE("女") ;
	private String title ;
	private Sex(String title) {
		this.title = title ;
	}
	public String toString() {
		return this.title ;
	}
}
class Member {
	private String name ;
	private int age ;
	private Sex sex ;	// 定义性别属性
	public Member(String name,int age,Sex sex) {
		this.name = name ;
		this.age = age ;
		this.sex = sex ;
	}
	public String toString() {
		return "姓名:" + this.name + ",年龄:" + this.age + ",性别:" + this.sex ;
	}
}
public class TestDemo { 
	public static void main(String[] args) {
		System.out.println(new Member("ww", 19, Sex.MALE)); 
	}







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值