基本概念,多例和枚举
枚举从本质上讲,是多例的一种设计,观察如下代码,多例设计的结果和枚举返回结果是一样的
package com.wjx.sayHello;
//class Color{
// private String title;
// private static final Color RED=new Color("RED");
// private static final Color GREEN=new Color("GREEN");
// private static final Color BLUE=new Color("BLUE");
//
// private Color(String title){
// this.title=title;
// }
// public String toString(){
// return this.title;
// }
// public static Color getInstance(int ch){
// switch(ch){
// case 0:return RED;
// case 1:return GREEN;
// case 2:return BLUE;
// default:return null;
// }
// }
//}
/***
*下面是枚举类型和多例返回结果是一样的
*本质上讲,枚举实际上就是一种多例设计的结果
* @author LeoWang
*
*/
enum Color{
RED,GRREN,BLACK,LEO;
}
public class TestDemo {
public static void main(String[] args){
System.out.println(Color.RED);
//System.out.println(Color.getInstance(0));
}
}
Enum 类
本质上来讲,enum类相当于定义了一个class类继承了java.lang.Enum类的父类
构造方法:protected Enum(String name,int ordinal)
取得枚举的名字:public final String name()
取得枚举的序号: public final String ordinal()
取得枚举所有数据values():
package com.wjx.sayHello;
enum Color{
RED,GRREN,BLACK,LEO;
}
public class TestDemo {
public static void main(String[] args){
for(Color temp:Color.values()){
System.out.println(temp.ordinal()+"==="+temp.name());
}
}
}
enum和Enum的区别?
enum是一个关键字,使用 enum定义的一个枚举类就相当于继承了Enum这个抽象类而已。
定义枚举的其他结构
由于上面讲到枚举只是在枚举内部产生了若干对象,为了实现在内部可以有属性,方法,实现接口,可以定义枚举其他结构
package com.wjx.sayHello;
interface IColor{
public String getColor();
}
enum Color implements IColor{
RED("红色"),GRREN("绿色"),BLACK("褐色");// 如果枚举类定义中定义其他属性方法,必须写在第一行,如果没有无参构造吗,需要声明对象内容
private String title;
private Color(String title){
this.title=title;
}
public String toString(){
return this.title;
}
@Override
public String getColor() {
// TODO Auto-generated method stub
return this.title;
}
}
public class TestDemo {
public static void main(String[] args){
IColor ic=Color.BLACK;
System.out.println(ic.getColor());
}
}
取得枚举的名字
取得枚举的名字
取得枚举的名字