在Java中,enum(枚举类型)被定义为类,继承自Enum类。当然,也继承了Object类。所以enum定义的变量也可以使用它们的方法。可以看下面的代码:
public class EnumDemo {
// 枚举定义为类型,自动继承自Enum类
// 不能再继承其他类或被其他类继承
enum Pet {
DOG, CAT, PIG, FISH, BIRD, MOUSE(100), ;// 每个枚举常量都是它的对象
private int price;
Pet() {
} // 可以像其他类一样实现构造函数,只能是private不可以用public,protected修饰
private Pet(int price) {
this.price = price;
}
public int getPrice() {// 也可以定义方法
return price;
}
}
/**
* @param args
*/
public static void main(String[] args) {
Pet p = Pet.valueOf("MOUSE");// valueOf方法的使用
for (Pet pet : Pet.values()) {// values方法的使用,返回的是一个Pet类型的数组
System.out.println(pet);
}
System.out.println();
System.out.println(p.equals(Pet.BIRD));//可以像其他类型一样调用方法
System.out.println();
System.out.println(p + " " + p.getPrice());
}
}
因为enum是一种类型,所以可以提供构造函数
Pet() {
} 添加实例变量private int price;和添加方法public int getPrice() {// 也可以定义方法
return price;
}另外它(enum)有两个预定义方法values()和valueOf()。
values()返回一个包含枚举常量列表的数组,
valueOf(String str)返回与str的字符串相对应的枚举常量。如
Pet p = Pet.valueOf("MOUSE");p对应 的就是MOUSE。
以上代码的运行结果是:
DOG
CAT
PIG
FISH
BIRD
MOUSE
false
MOUSE 100
需要说明的是,与其他类型相比,eunm类型不能使用new实例化,也不能继承其他类,也不能是超类。也就是说它(enum)不能扩展。但可以实现接口。
enum不能继承其他类型,但它自动继承Enum类。
再有一点就是枚举的每个常量都是定义它的类的对象。
DOG, CAT, PIG, FISH, BIRD, MOUSE(100) MOUSE(100)调用的是Pet(int price)并且它们(枚举常量)都被隐式的声明为公有、静态final成员。
最后这几点希望大家留意。
本文深入探讨了Java中枚举类型的概念、特点、构造方法、预定义方法及其使用场景,包括valueOf方法和values方法的运用,并展示了如何在代码中实例化枚举常量及其属性访问。
207

被折叠的 条评论
为什么被折叠?



