JAVA完全参考手册(第8版) 第12章 枚举部分

本文深入探讨Java枚举的特性与用法,包括如何定义枚举、构造函数的应用、实例变量及方法的添加,并实现了接口。此外,还介绍了枚举的常用方法values()和valueOf(),以及如何利用枚举提升代码质量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、将枚举定义为类,可以具有构造函数、方法以及实例变量。enum关键字。枚举常量,被隐式声明为公有静态final成员,类型为声明它们的类型,自类型化的。可以创建枚举类型的变量,但不能使用new实例化枚举。如,

Enum Apple { Jonathan, GoldenDel, RedDel, Winesap, Cortland }

Apple ap;  ap = Apple.RedDel;  if(ap == Apple.GoldenDel) ...

枚举值也可以用于控制switch语句。枚举常量的名称没有使用枚举类型名进行限定,例如,是case RedDel,而不是case  Apple.RedDel。否则会有编译时错误。

当显示枚举常量时,会输出枚举常量的名称。如,System.out.println(Apple.RedDel);输出RedDel。

枚举有两个限制:一,不能继承其他类;二,不能是超类,即不能扩展。

2、values()和valueOf()方法

public static enum-type [] values() 

返回一个包含枚举常量列表的数组。可以使用for-each语句。例如for(Apple a: Apple.values()) {...}

public static enm-type valueOf(String str)

返回与传递到参数str的字符串相对应的枚举常量。

3、java枚举是类类型

可以为枚举提供构造函数、添加实力变量和方法,甚至可以实现接口。每个枚举常量都是所属枚举类型的对象。

如果为枚举类型定义了构造函数,那么当创建每个枚举常量时都会调用该构造函数。

枚举继承自Enum类,java.lang.Enum。三个常用的方法:

final int ordinal() //获取用于指示枚举常量在常量列表中位置的值,即原始值。

final int compareTo(enum-type e) //比较相同类型的两个枚举常量的原始值。返回正负数0.如ap.compareTo(ap1)。

可以使用equals()方法来比较枚举常量和其他对象的相等性,当两个对象都引用同一个枚举中相同的常量时才相等。

可以使用"=="比较两个枚举引用。

最后例子,

enum Apple {
	Jonathan(10), GoldenDel(9), RedDel(12), Winesap(15), Cortland(8);
	
	private int price;
	
	Apple(int p) { price = p; }  //函数可以重载
	
	int getPrice() { return price; }
}

class EnumDemo {
	public static void main(String args[]) {
		Apple ap;
		
		System.out.println("Winesap costs " + Apple.Winesap.getPrice() + " cents.\n");
		System.out.println("All apple price:");
		for(Apple a: Apple.values())
			System.out.println(a+ " costs " + a.getPrice() + " cents.");
	}
}

结果如下:

Winesap costs 15 cents.

All apple price:
Jonathan costs 10 cents.
GoldenDel costs 9 cents.
RedDel costs 12 cents.
Winesap costs 15 cents.
Cortland costs 8 cents.


于2013/04/10

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值