枚举注意事项
-
如果要为每个枚举值指定属性,则在枚举中必须声明一个参数为属性对应类型的构造方法(不能是public)
-
enum内置方法
int compareTo(E o)
比较此枚举与指定对象的顺序。Class getDeclaringClass()
返回与此枚举常量的枚举类型相对应的 Class 对象。String name()
返回此枚举常量的名称,在其枚举声明中对其进行声明。int ordinal()
返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)。String toString()
返回枚举常量的名称,它包含在声明中。static <T extends Enum> T valueOf(Class enumType, String name)
返回带指定名称的指定枚举类型的枚举常量。static T[] values()
返回枚举的所有值 -
可以把 enum 看成是一个普通的 class,它们都可以定义一些属性和方法,不同之处是:enum 不能使用 extends 关键字继承其他类
简单举例代码
package demo;
public class Test {
// 1.定义枚举类型
private enum Animal{
dog("Huskie","8"),cat("bluecat","6");
private String age;
private String name;
Animal(String name,String age){
this.name=name;
this.age=age;
}
public String getName(){
return name;
}
public String getAge(){
return age;
}
public static Animal getValue(String name){
for(Animal animal:Animal.values()){
if(animal.name==name){
return animal;
}
}
throw new IllegalArgumentException("No element matches " + name);
}
}
public static void main(String[] args) {
for(Animal animal:Animal.values()){
System.out.println(animal.getName());
System.out.println(animal.name());
}
Animal.getValue("hashiqi");//抛出错误
}
}