25-枚举

枚举

JDK1.5之后提出枚举的概念,枚举主要是用来定义有限个数对象的一种结构。枚举就属于多例设计且结构更简单。

定义枚举类

JDK1.5之后体统enum关键字,利用关键字实现枚举定义

enum Color{
    
    		//枚举类
	RED,GREEN,BLUE;		//实例化对象
}
Color c = Color.RED;	//获取实例化对象

若使用多例设计需要很多代码,牵扯到构造方法私有化和静态方法。
使用枚举可是在程序编译时就判断所使用的实例化对象是否存在。
进行枚举处理时,还可以利用values()方法获取所有输出;
for (Color c : Color.values())
可以在switch中进行枚举项的判断。

Enum类

严格意义上来讲枚举不属于一种新结构,是一个类这个类默认继承Enum类,
现在定义的枚举类的类型就是Enum中所使用的E类型。
枚举之中每一个对象的序号是根据枚举对象定义顺序决定的。
**面试:**解释enum与Enum的区别?

  • enum:是从JDK1.5之后提供的一个关键字,用于定义枚举类;
  • Enum:是一个抽象类,所以使用enum关键字定义的类就默认继承了此类。

定义枚举结构

枚举本身就属于一种多例设计模式,所以在一个类中可以定义的结构很多:构造方法、普通方法、属性等,那么这些内容在枚举类中依然可以直接定义,需要注意:枚举类中定义的构造方法不能采用非私有化定义(public无法使用)。
枚举对象要写在类的首行。
枚举类中也可以实现接口的继承。
枚举类中可以直接定义抽象方法,要求每一个枚举对象都要独立覆写此抽象方法。
枚举的定义是十分灵活的,更多情况下还是建议使用它的正确用法,就是定义一个实例对象范围即可。

枚举应用案例

enmu Sex{
    
    
	MALE("男")FEMALE("女");
	private String title;
	private Sex(String title){
    
    
		this.title = title;
	}
	public String toString(){
    
    
		return this.title;
	}
}
class Person{
    
    
	private String name;
	private int age;
	private Sex sex;
	public Person(String name, int age, Sex sex){
    
    
		this.name = name;
		this.age = age;
		this.sex = sex;
	}
	public String toString(){
    
    
		return ...;
	}
}
main{
    
    
	System.out.println(new Person("test", 20, Sex.MALE))
}

猜你喜欢

转载自blog.csdn.net/MARVEL_3000/article/details/111467169
今日推荐