1、什么是枚举?
java枚举是一个特殊的类,一般表示一组常量,,比如一年的4个季节,一年的12个月份,
一个星期的7天,方向有东南西北等。
java枚举类使用enum关键字来定义,各个常量使用逗号来分割,。枚举类和正常类一样,
也可以有成员变量、实例方法、静态方法、抽象方法。
例如定义一个颜色的枚举类
enum Color{
RED,GREEN,BLUE;
}
public class test{
public static void main(String[] args){
Color c1= Color.RED;
System.out.println(c1);//RED
}
}
2、enum定义的枚举类默认继承了java.lang.Enum类,并实现了java.lang.Serializable和
java.lang.Comparable两个接口。
values()、ordinal()和valueOf()方法位于java.lang.Enum类中:
values()返回枚举类中所有的值
ordinal()方法可以找到每个枚举常量的索引,就像数组索引一样
valueOf()方法返回指定的字符串值的枚举常量。
2.1 枚举类常量
首先枚举类是一个特殊的class,这个class相当于final static 修饰,不能被继承,
它的构造方法强制被私有化,下面有一个默认的构造方法private ColorEnum();
所有的枚举类都继承自java.lang.Enum类。由于java不支持多继承,所以枚举对象
不能再继续继承其他类。
public enum ColorEnum{
//每个枚举变量都是枚举类ColorEnum的实例,相当于RED= new ColorEnum(1);
//按序号来,每个成员变量都是final static 修饰
RED,GREEN,BLANK,YELLOW;
}
@Test
public void ColorTest(){
//ordinal返回枚举变量的序号
//values返回枚举类中所有值
for(ColoeEnum color:ColorEnum.values()){
System.out.println(color+",ordinal:"+color.ordinal()+",name:"+color.name());
}
}
2.2 带一个参数的枚举
public enum TypeEnum{
FIREWALL("firewall"),
SECRET("secretMac"),
BALANCE("fs");
private String typeName;
TypeEnum(String typeName){
this.typeName=typeName;
}
public String getTypeName(){
return this.typeName;
}
//根据类型的名称,返回类型的枚举实例
public static TypeEnum fromTypeName(String typeName){
for(TypeEnum type:TypeEnum .values()){
if(type.getTypeName().equals(typeName)){
return type;
}
}
return null;
}
}
@Test
public void TypeTest(){
String typeName= "fs";
TypeEnum type = TypeEnum .fromTypeName(typeName);
//type是TypeEnum 类实例化对象 typeName是实例化对象type的值
//name:实例化对象的名称(String)
System.out.println(type+",typeName:"+type.getTypeName()+",ordinal:"+type.ordinal()
+",name:"+type.name);
}
上一篇
没有了