java中的enumeration_Java Enumeration (枚举类型) (1) -- 基本概念

Enumerated typeshave no public constructor. The only instances of an

enumerated type are those declared by the enum.

Enums are not Cloneable, so copies of the existing

instances cannot be created.

Enums implement java.io.Serializableso they can be

serialized, but the Java serialization mechanism handles them specially to

ensure that no new instances are ever created.

Instances of an

enumerated type are immutable: each enum value retains its identity. (We'll see

later in this chapter that you can add your own fields and methods to an

enumerated type, which means that you can create enumerated values that have

mutable portions. This is not recommended, but does not affect the basic

identity of each value.)

Instances of an enumerated type are stored in public static

final fields of the type itself. Because these fields are final,

they cannot be overwritten with inappropriate values: you can't assign the

DownloadStatus.ERROR value to the DownloadStatus.DONE

field,

for example.

By convention, the values of enumerated types are written using

all capital letters, just as other static final fields are.

Because there is a strictly limited set of distinct enumerated

values, it is always safe to compare enum values using the = = operator instead of calling the

equals() method.

Enumerated types do have a working equals( ) method,

however. The method uses = =finalso that

it cannot be overridden.This working equals( ) method allows

enumerated values to be used as members of collections such as Set,

List, and Map.

internally and is

Enumerated types have a working hashCode() method consistent with their equals(

)equals(), hashCode( ) is final.

It allows enumerated values to be used with classes like

java.util.HashMap.

method. Like

Enumerated types implement java.lang.Comparable, and the compareTo() method orders enumerated values in the

order in which they appear in the enum declaration.

Enumerated types include a working toString( ) method that returns the name of the

enumerated value. For example, DownloadStatus.DONE.toString( ) returns

the string "DONE" by default. This method is not final, and

enum types can provide a custom implementation if they choose.

Enumerated types providea static valueOf( ) methodthat does the opposite of the

default

toString( ) method. For example,

DownloadStatus.valueOf("DONE") would return

DownloadStatus.DONE.

Enumerated types define a final instance method namedordinal()that returns an integer for each enumerated

value. The ordinal of an enumerated value represents its position (starting at

zero) in the list of value names in the enum declaration. You do not

typically need to use the ordinal( ) method, but it is used by a number

of enum-related facilities, as described later in the chapter.

Each enumerated type defines a static method named values(

) that returns an array of enumerated values of that type. This array

contains the complete set of values, in the order they were declared, and is

useful for iterating through the complete set of possible values. Because arrays

are mutable, the values( ) method always returns a newly created and

initialized array.

Enumerated types are subclasses of java.lang.Enum, which

is new in Java 5.0. (Enum is not itself an enumerated type.) You cannot

produce an enumerated type by manually extending the Enum class, and it

is a compilation error to attempt this. The only way to define an enumerated

type is with the enum keyword.

It is not possible to extend an enumerated type. Enumerated types

are effectively final, but the final keyword is neither

required nor permitted in their declarations. Because enums are effectively

final, they may not be abstract.

Like classes, enumerated types may implement one or more interfaces.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值