一、枚举的基本特性
声明一个枚举使用enum关键词。泛型不能被继承,因为enum对象已经继承了java.lang.ENUM类
public enum Test{
NI,WO,TA
}
枚举对象自带一个values方法,返回一个枚举对象的数组
** t.ordinal返回每一个枚举实例在泛型中声明的顺序**
** t.name返回枚举实例的名称**
for(Test t:Test.values()){
t.ordinal
t.name
}
二、泛型中声明方法
三、switch中使用泛型
case语句中不用通过泛型类引用泛型实例的方式
Common comm=Common.BUSINESS;
switch(comm){
case BUINESS:
break;
case RONDOM:
break;
}
四、使用接口组织枚举类
因为枚举不能再继承,所以不能让枚举类有一父类,因此多个枚举也不能有一个统一的父类管理。但是可以通过实现接口的方式,让他们有一个统一“接口父类”。
public interface FOOD{
public enum Apple implements FOOD{
apple1,apple2;
};
public enum Coffee implements FOOD{};
}
//持有所有的枚举实例
public enum Course{
APPLE(FOOD.Apple.class);
privtate FOOD[] values;//持有Food中某一个枚举的所有枚举实例
private Course(Class<? extends FOOD> clazz){
values=clazz.getEnumConstants();
}
}
这样他们就都归属于FOOD类旗下了。并且Course下的APPLE持有了所有的FOOD中的Apple泛型。
四、使用枚举组织枚举类
同样我们可以使用枚举类,内部创建一个接口的方式来管理枚举类,避免了单独创建一个接口文件
public enum Course{
APPLE(FOOD.Apple.class);
//持有Food中所有枚举的实例
privtate FOOD[] values;
private Course(Class<? extends FOOD> clazz){
values=clazz.getEnumConstants();
}
//内部持有Food类管理枚举
public interface Food{
public enum Apple implements FOOD{
apple1,apple2,apple3;
};
public enum Coffee implements FOOD{
coffee1,coffee2;
};
}
}
五、使用EnumSet替代标志位
EnumSet是一个用来操控枚举类型的集合,它的速度很快,因为每次add的时候,每个枚举值只占一个长整型的一位。同样因为EnumSet的基础是long,long类型的长度是64位,所以EnumSet的数量不能超过64个。
1.创建一个功能EnumSet
EnumSet<Apple > foodset=EnumSet.noneOf(Apple .class)
2.创建一个包含指定枚举元素的集合
EnumSet<Set> foodset=EnumSet.of(apple1,apple2);
3.创建一个包含指定范围的集合
EnumSet<Apple> foodset=EnumSet.rnage(apple1,apple3);
添加元素
foodset.add(apple4);
六、通过枚举实现常量的特性
Java允许为enum元素编写方法,只需要定义一个或者多个抽象的方法。通过这个特性枚举可以达到常量的效果。
public enum Test{
public abstarct string getInfo();
TEST{
String getInfo(){
return "test"
}
},
EXAMPLE{
String getInfo(){
return "example"
}
}
}