java中枚舉的原理是什么?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
Java主要應用于:1. web開發;2. Android開發;3. 客戶端開發;4. 網頁開發;5. 企業級應用開發;6. Java大數據開發;7.游戲開發等。
1、枚舉是繼承了抽象類Enum的類。
Season extends java.lang.Enum<Season>
2、通過一段靜態代碼塊初始化枚舉。
static {};
descriptor: ()V
flags: ACC_STATIC
Code:
stack=4, locals=0, args_size=0
0: new #4 // class io/github/yehongzhi/user/redisLock/Season
3: dup
4: ldc #7 // String SPRING
6: iconst_0
7: invokespecial #8 // Method "<init>":(Ljava/lang/String;I)V
10: putstatic #9 // Field SPRING:Lio/github/yehongzhi/user/redisLock/Season;
13: new #4 // class io/github/yehongzhi/user/redisLock/Season
16: dup
17: ldc #10 // String SUMMER
19: iconst_1
20: invokespecial #8 // Method "<init>":(Ljava/lang/String;I)V
23: putstatic #11 // Field SUMMER:Lio/github/yehongzhi/user/redisLock/Season;
26: new #4 // class io/github/yehongzhi/user/redisLock/Season
29: dup
30: ldc #12 // String AUTUMN
32: iconst_2
33: invokespecial #8 // Method "<init>":(Ljava/lang/String;I)V
36: putstatic #13 // Field AUTUMN:Lio/github/yehongzhi/user/redisLock/Season;
39: new #4 // class io/github/yehongzhi/user/redisLock/Season
42: dup
43: ldc #14 // String WINTER
45: iconst_3
46: invokespecial #8 // Method "<init>":(Ljava/lang/String;I)V
49: putstatic #15 // Field WINTER:Lio/github/yehongzhi/user/redisLock/Season;
52: iconst_4
53: anewarray #4 // class io/github/yehongzhi/user/redisLock/Season
56: dup
57: iconst_0
58: getstatic #9 // Field SPRING:Lio/github/yehongzhi/user/redisLock/Season;
61: aastore
62: dup
63: iconst_1
64: getstatic #11 // Field SUMMER:Lio/github/yehongzhi/user/redisLock/Season;
67: aastore
68: dup
69: iconst_2
70: getstatic #13 // Field AUTUMN:Lio/github/yehongzhi/user/redisLock/Season;
73: aastore
74: dup
75: iconst_3
76: getstatic #15 // Field WINTER:Lio/github/yehongzhi/user/redisLock/Season;
79: aastore
80: putstatic #1 // Field $VALUES:[Lio/github/yehongzhi/user/redisLock/Season;
83: return這段靜態代碼塊的作用就是生成四個靜態常量字段的值,還生成了$VALUES字段,用于保存枚舉類定義的枚舉常量。
3、關于values()方法,這是一個靜態方法,作用是返回該枚舉類的數組,底層實現原理,其實是這樣的。
public static io.github.yehongzhi.user.redisLock.Season[] values(); Code: 0: getstatic #1 // Field $VALUES:[Lio/github/yehongzhi/user/redisLock/Season; 3: invokevirtual #2 // Method "[Lio/github/yehongzhi/user/redisLock/Season;".clone:()Ljava/lang/Object; 6: checkcast #3 // class "[Lio/github/yehongzhi/user/redisLock/Season;" 9: areturn
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。