Java enum可以这样用的

    在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成员。

最后这几点希望大家留意。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值