1.枚举的基本概念
想一下,多设计模式,构造方法私有化(非 public),之后在类的内部存在若干个指定的对象,通过一个方法返回指定对象.
多设计模式
package class4;
class Color{
private static final Color RED=new Color("红色"); //实例化对象
private static final Color GREEN=new Color("绿色"); //实例化对象
private static final Color BLUE=new Color("蓝色"); //实例化对象
private String cname;
public Color(String cname) {
this.cname=cname; //构造方法私有化
}
public String toString(){
return this.cname;
}
public static Color getInstance(int ch){ //取得实例化对象
switch (ch){
case 0:
return RED;
case 1:
return GREEN;
case 2:
return BLUE;
default:
return null;
}
}
}
public class Deao {
public static void main(String[] args) {
Color color=Color.getInstance(0); //取得实例化对象
System.out.println(color);
}
}
运行结果
在JDK1. 5之后对于多列设计模式有了新的改进,使用新的关键字来进行定义------枚举(简化了多列设计模式),枚举使用enum关键字进行定义.
2.定义枚举
运行结果
运用枚举多列设计模式会更加直白,操作更为便捷.
3.在java中,枚举并不是一个新的类型,严格说,每一个使用enum定义的类实际上都属于一个类继承Enum父类而已,而java.lang.Enum类定义:
public abstract class Enum<E extends Enum<E>>
extends Object
implements Comparable<E>,Serializable
在Enum类之中定义了两个方法.
取得枚举的序号:public final int ordinal();
取得枚举的名称:public final String name();
在枚举中,可以利用values()方法取得枚举中的全部对象,并且可以利用foreach进行输出.
运行结果
验证了每一个枚举类都是Enum的子类.每一个枚举对象都是根据其定义的顺序进行编号,JDK1.5后,switch可以接受枚举类型的判断.
4.在switch中利用枚举判断.
运行结果
直接利用枚举进行switch中case的判断条件,这种对switch的支持,是多列设计模式所不支持的,
也是枚举方便之处.
5.枚举的其他定义.
枚举属于多列设计模式模式,类中肯定有多种组成,包括属性、方法和构造方法,在枚举中也同样可以定义以上内容,注意: 枚举类中定义的构造方法绝对不能是public,必须私有化(非public).除了这些外,枚举中的每一个定义的对象,必须写在枚举类的首行.
在枚举中定义其他结构.
运行结果
除了将属性、方法定义在了枚举中,其他的组成和普通类没有任何区别。
注意:枚举每个对象都要调用构造方法.
如果在枚举类中定义了有参构造,则声明每一个枚举对象时都必须明确的调用此构造方法,否则出现编译错误.
6.让枚举实现接口
可以在枚举中直接定义抽象方法,这就要求枚举中的每一个枚举对象分别实现抽象方法.
7.在枚举中定义抽象方法
package class4;
enum Color6{
RED("红色"){
public String getColor(){
return this.toString();
}
} , //定义枚举对象,实现抽象方法
GREEN("绿色"){
public String getColor(){
return this.toString();
}
}, //定义枚举对象,实现抽象方法
BULE("蓝色"){
public String getColor(){
return this.toString(); //定义枚举对象,实现抽象方法
}
};
private String cname2;
private Color6(String cname2){
this.cname2=cname2;
}
public String toString(){
return this.cname2;
}
public abstract String getColor(); //抽象方法
}
public class Deao5 {
public static void main(String[] args) {
System.out.println(Color6.RED.getColor());
}
}
运行结果
8.枚举应用
来源:CSDN
作者:morning to afternoon
链接:https://blog.csdn.net/ysy_1_2/article/details/104354468