Java SE 5之前,Java程序员在需要使用枚举类型时,必须了解很多细节并需要格外仔细,以正确地产生enum的效果。 0 G, [, m! R7 o+ S
现在Java也有了enum,并且它的功能比C/C++中的枚举类型要完备得多。
9 I/ W3 U( Z8 k3 o! L* J8 mJava中定义一个枚举类型,如下:
F |/ l T8 L//Rmb.java / l5 }2 o K8 m/ S) k* e) F
/** *//**
! ]! h+ v H$ A) \. a z% Y * 表示人民币中的几种面值的enum类型 ) h, d* x' \6 b
* @author autumn
- M9 Y7 ?+ H) X1 {3 { */
9 C9 }3 r( W3 o: N% Jpublic enum Rmb ...{ / k9 y( }/ ~8 r
/** *//** 1 V4 r( e/ W" L) I8 h D/ L7 ^1 H
* 壹角 8 y* K t$ h& i6 y
*/ / A2 C& o2 r% h" n% U( l; `: E
YIJIAO, % @+ @" f; s- g8 l( z
7 V0 s8 b! Q; B3 u$ E
/** *//** 6 ?; ]& d2 }9 O5 p- a# q
* 伍角 * N2 w C8 {! R6 \7 n% n" ]
*/
2 a C. \$ V+ M7 \1 t; _ o' q/ {# ~ WUJIAO,
8 ~1 ~5 {4 y" F
/ y, _* ~+ F" h" X+ e; J /** *//**
0 v" d% M* e' w k% f$ { * 壹圆 . d' \; T5 E6 |, G$ Z9 J
*/
+ W* g4 h# G! [ YIYUAN,
, u) ^9 {# o# X6 S. d0 O- P4 }. Y* @3 M9 U9 d# X7 \; ?
/** *//** ) A3 Z! d" ]2 s
* 伍圆 $ b" ]0 D0 N1 d) p
*/
, T7 x# \6 r. k# A/ [ WUYUAN, 1 f0 A. ], x1 U: R7 [
) p5 N0 O& T* d- V# ` /** *//**
1 x* \: r/ O8 |, f- A * 拾圆
0 W8 m" j0 ^" R */
# Y0 i6 M- E) M* a SHIYUAN, 2 H# b0 }) C6 p( `: {7 Q& A
8 V# t* X" K$ Y; ?4 A) k* { /** *//** 0 e4 K/ }6 A9 v" {" G3 M
* 伍拾圆 2 j4 {/ q# ?) ~0 R7 l) n
*/ " d& C5 a0 A& D6 T% {" }9 s
WUSHIYUAN,
( i5 k, j6 Z3 V; I# `$ k Q: G7 x$ |/ H5 c. ?
/** *//**
/ d$ E/ R$ J2 d E * 壹佰圆 $ t3 ?8 C0 Q! Y2 W3 C! H, w) r! R
*/
6 j5 S7 ]: s* D- b" y1 P* O2 c F! [ YIBAIYUAN / ?* x* u/ n! Z% Q& b% T9 l
} / u' I3 I' l) ^" O1 J& r
0 ]- Y$ _2 }* q这里创建了一个名为Rmb的枚举类型,它具有7个实例(值)。
0 y1 g/ A$ O! G4 H u: o枚举类型可以定义在一个单独的java源文件中(如上),也可以定义在其他java类内部。例如: 8 ~. J0 M' U; K1 N* D
public class Card ...{
( `$ B; M2 c V5 I9 o2 _: B( z. f public enum Rank ...{ DEUCE, THREE, FOUR, FIVE, SIX, 8 \8 r3 M! `, b0 I
SEVEN, EIGHT, NINE, TEN, JACK, QUEEN, KING, ACE }
1 f) T7 W0 u1 }$ A8 W5 o8 b. N. G
f. J! t$ c( L2 F& w( Y public enum Suit ...{ CLUBS, DIAMONDS, HEARTS, SPADES }
- c- O2 ^5 o" v- W8 e: ^
7 v6 T8 H9 x9 r, F6 Q. u( \ private final Rank rank;
! Y4 K! {% H4 n7 q4 S' v! g& K private final Suit suit; 6 A6 s. E: v, h# @$ b) n9 D
private Card(Rank rank, Suit suit) ...{
3 }+ x T* f0 v4 v4 u/ t; b1 Y this.rank = rank; 3 P/ X( G- `6 w9 d) N2 h1 i. F
this.suit = suit;
* m @7 l; X7 a6 @ } b. z2 u6 A) M c$ x1 I, n
* y2 ~5 T* ^8 s
public Rank rank() ...{ return rank; } a9 n% P* [# w5 ]3 k. E
public Suit suit() ...{ return suit; }
6 l6 t% U- r' x( b- g0 R5 A% \: W0 y public String toString() ...{ return rank + " of " + suit; } $ ]1 x2 D+ e3 d
} |