Java SE 5之前,Java程序员在需要使用枚举类型时,必须了解很多细节并需要格外仔细,以正确地产生enum的效果。 % ~" {. G0 b/ l! s) u$ B3 N
现在Java也有了enum,并且它的功能比C/C++中的枚举类型要完备得多。 1 B/ Q6 o, q* c" Z
Java中定义一个枚举类型,如下:
: y/ V6 c; K+ K; m7 D" }+ A//Rmb.java
. C6 V1 J+ r, B0 @# I/** *//** % }) |) B1 |1 C1 R1 `2 I
* 表示人民币中的几种面值的enum类型 ) }" ^2 s! i2 l1 e
* @author autumn
7 S8 y, X, U. m, R */
3 Z" g" ^7 d \5 h0 P- j( {public enum Rmb ...{ ' v3 R# J- z% t% K" }/ T5 @: U
/** *//** ) ]! r# N+ |& h6 v( U
* 壹角 1 I) r" [ I8 F( f. Z. g/ d
*/ 1 N5 c/ x/ A( {. U3 w
YIJIAO, 7 N9 ?+ F Z% P! c( \+ S
% {; n. v3 s3 Z5 V# C /** *//** Y: n* c P3 z/ R
* 伍角 ) ]6 h& r5 P4 W1 \
*/ & {" c( p# q6 d, _' s4 `7 g
WUJIAO,
% g) |% S2 \; R6 o8 d+ p$ \) Q4 T4 k( ?
/** *//** 8 D8 G, [$ G' k8 B1 p
* 壹圆
) ~3 K; S$ I2 I6 i */
% f, ]% g6 |( `- _1 s' v) }& V$ u$ q YIYUAN, # B! D @1 I1 M* C6 v% [ E
/ j' u+ f0 @6 N0 H" p& C, L
/** *//**
, ~2 U1 d- c, e* [ * 伍圆
6 O s5 S" E# r; z: {3 p */ 0 O- O/ f& H% P: M
WUYUAN, ! d9 r( \0 I3 L- R# m. b0 W
* @: W: E* m/ J4 f: J /** *//** : ]2 o# k4 Q! o4 t
* 拾圆 ; X, F2 v' X3 _: }% ]
*/ 5 E" N5 Q; G3 i
SHIYUAN, 8 J7 b# [3 k& r7 U4 Y, o
- [6 e' @! Q* N' U- t* Q( P- w /** *//**
1 x: f' R% O( g; n * 伍拾圆 7 F% W+ M0 G* a( \9 H1 a% [' P8 O( w
*/
9 q: K# e# I' W- K! d7 m: l1 M WUSHIYUAN, 7 S: P8 p/ {$ ?7 G, J2 ?6 |( m
2 @4 ]# d$ _& j8 E y; v1 b, s /** *//**
_; g2 g; @; ^& x7 _9 a! A+ e * 壹佰圆
, \1 p) j( w5 x5 m. L. G/ Z+ R& Y7 | */
h( U% q* \+ i YIBAIYUAN ; k$ H- Z/ k4 o& D
} - i* m' S; i6 m
4 E' L. K. D6 }2 L) u这里创建了一个名为Rmb的枚举类型,它具有7个实例(值)。 1 h; p' X$ K# \
枚举类型可以定义在一个单独的java源文件中(如上),也可以定义在其他java类内部。例如: 8 G2 d/ U* H8 P& @
public class Card ...{
/ Y9 ]4 ~" H* D7 N0 t public enum Rank ...{ DEUCE, THREE, FOUR, FIVE, SIX, + j+ Q0 y' \+ K H$ t
SEVEN, EIGHT, NINE, TEN, JACK, QUEEN, KING, ACE }
! P+ n" \8 c' F1 f( A0 g% e* P/ k) |8 ~4 B# |% y
public enum Suit ...{ CLUBS, DIAMONDS, HEARTS, SPADES }
0 p3 @7 x% i% B; ` ^; k
# h9 r. {& H( A8 W% k: X) Y/ r private final Rank rank; : [& H& ?8 V+ d# O2 p1 x2 R! U7 b* r$ q
private final Suit suit;
+ U& |8 g" q9 p" G# |( X; n private Card(Rank rank, Suit suit) ...{ 8 g+ @9 ~7 K; {5 \1 g8 f
this.rank = rank;
( \6 v/ d Y; }, R) `( t this.suit = suit;
; n# Y- }. l% c+ Z% ? }
0 q, W& J4 M6 W: t, D. i, G5 \ C. V, U# w
public Rank rank() ...{ return rank; }
5 M3 d5 v* E( u0 c public Suit suit() ...{ return suit; }
& b! Q9 C: {) f4 z& \: M0 ] public String toString() ...{ return rank + " of " + suit; }
6 _1 z3 o/ H0 D' q7 k$ W0 |/ L} |