Java SE 5之前,Java程序员在需要使用枚举类型时,必须了解很多细节并需要格外仔细,以正确地产生enum的效果。 + E6 y+ y8 Z5 J" n9 D+ z' k) s
现在Java也有了enum,并且它的功能比C/C++中的枚举类型要完备得多。 : m8 O" _* |. e8 ]0 g
Java中定义一个枚举类型,如下: 3 f- H# x8 E/ w8 K
//Rmb.java 7 \1 O! f) ~8 @" i+ o
/** *//** 8 q* t! O2 s# U1 {6 d
* 表示人民币中的几种面值的enum类型
+ h: a" P/ N/ F% L7 x2 [ * @author autumn
" q$ {; J* f& H9 J */
3 C% N6 l8 j$ I9 M% p, Cpublic enum Rmb ...{ # r% I/ {( L; j
/** *//**
6 W: a9 ^4 t6 M * 壹角
1 Q( J( M" \! q7 _9 ~8 r H */ " Y* Y1 c# S) t! N
YIJIAO,
) v. \# b6 U0 \$ c" ~
3 f$ d$ W5 i+ n* x4 \) l- q /** *//** ) E8 s3 W, R/ q8 r& z
* 伍角
+ Y& b- o9 }' F6 N */
2 p" ^2 A$ j. V WUJIAO, / M9 ~ `* n, b1 Z0 H
$ H+ a- ~/ B! c5 _ /** *//** 5 ` [8 o0 d5 U3 |) }2 u" K
* 壹圆 ! M% x a' U6 o% [
*/ ) t. j y# H1 w# c& r( Z3 J
YIYUAN,
. k/ w+ H' a2 b
. \3 b. L+ v L1 }) ?4 X /** *//** / h% X; K1 m% k% b' ^3 p* o
* 伍圆 " n/ c; s/ S; F6 n# A! x
*/
' ^. d5 T4 W. F! [7 N. Y$ m WUYUAN, " s8 p4 S# N5 S' x7 P
5 s ~0 o' S# i! q. y P /** *//**
) @8 d7 c/ I; i" V6 A * 拾圆
6 V/ D; u% m* N+ x* A */
7 R8 |6 M; P2 A+ u SHIYUAN, $ u+ E* ~, o0 ^0 P
% Z3 k7 E! Y, [ /** *//**
% l) n, m) k2 u0 w5 r9 [2 ~5 q * 伍拾圆
) w& j' e1 R* J7 q */
% d+ E* q, {. L. f WUSHIYUAN, 4 ?7 J4 D. o; z2 H8 ~2 [1 B
! F, r( z' U. ^6 J! G4 t2 f /** *//**
9 o+ g: f6 [: P * 壹佰圆 ' Q2 ` l/ A$ H3 P% L
*/ 2 c# k1 h3 J$ a V
YIBAIYUAN
8 U6 }5 }+ }! |7 O}
: D+ `5 J+ H& a/ h, Y6 b" d- Y8 d
" p2 f0 x6 {0 X; W7 r+ x7 Q这里创建了一个名为Rmb的枚举类型,它具有7个实例(值)。
* v, V/ y9 A5 V: q枚举类型可以定义在一个单独的java源文件中(如上),也可以定义在其他java类内部。例如:
+ I; t' T7 [# S; l0 E( ipublic class Card ...{
& B6 c( ^) G' \0 Q3 A! |/ H+ w public enum Rank ...{ DEUCE, THREE, FOUR, FIVE, SIX, 4 U" X" Y/ ~1 q: K8 T8 E: ~
SEVEN, EIGHT, NINE, TEN, JACK, QUEEN, KING, ACE }
" \5 d- b( n) t5 I$ h+ N* Y7 [2 Z: v+ O! i8 K8 V
public enum Suit ...{ CLUBS, DIAMONDS, HEARTS, SPADES }
( E. a0 J/ P- E9 y2 f! x
- b# ^2 X7 o; {, j4 _. u private final Rank rank;
8 d+ d, x* N' G9 b# k private final Suit suit;
/ n3 w# \) L8 M/ w1 |3 A# w. M private Card(Rank rank, Suit suit) ...{
! D x( ]" B; x* m; H this.rank = rank; & t x& ]: Y* q4 D* T
this.suit = suit; 2 f$ `( i5 B! R9 M. ?
} ( a' Y7 o$ ]: J/ N# M+ V8 l
6 O; C* v1 y( u" u8 ?5 C$ i" K
public Rank rank() ...{ return rank; } , I! C# z% x, r f; ?, p! {
public Suit suit() ...{ return suit; }
6 N7 {( D- E: @1 [4 u7 p public String toString() ...{ return rank + " of " + suit; } / s: {8 i' ]2 z' @$ ^ E/ g1 ?/ M$ b
} |