国产成人AV无码一二三区,少女1到100集,国产精品久久久久精品综合紧,巜公妇之诱感肉欲HD在线播放

文章 > java基础 > java枚举的原理分析

java枚举的原理分析

头像

小妮浅浅

2021-04-26 10:06:363925浏览 · 0收藏 · 0评论

本教程操作环境:windows7系统、java10版,DELL G3电脑。

编译时编译器会做很多操作,我们用javap-v反编译Season.class文件,可以看到很多细节。

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

以上就是java枚举的原理分析,希望能对大家有所帮助。更多Java学习指路:Java基础

关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

三个男人躁我奶头好舒服| 百度网址| 他解开内裤把舌头进去的视频| 地下室SMS录制的全部内容| 明明说好的只蹭蹭苦苦恳求歌词| 9.1免费漫画网站NBA| 男女啪啪做爰高潮全过有多动症| 亚洲精品国偷自产久色| 女儿13岁爸爸来尝鲜食品的祝福... | 父女一起到达巅峰的小说| 结城みさ| 《互换人妻HD中字》| 电影《乳妓》在线观看| 巨乳童颜| 人狗大战6免费观看正版| 张柏芝门户大开照| 欧美叔叔别撩我免费观看电视剧| 妈妈总是晚上装睡配合孩子| 9.1免费漫画网站NBA| 色翁荡熄1-13老卫淑芬| 高清国产少女免费观看电视剧| 无人区免费高清版观看| 老公弄我一边干一边说粗话 | 恋爱之瘾台湾剧| 做爰高潮A片(毛片)| 蜜桃视频| 美国禁忌2在线观看电视剧| 《菊内留香》双男主| 《被按摩的人妻4》| 嫂子的职业电影| 无风险9.1免费版观看| 亲密时男人最想听女人说什么| 成品人和精品人的特点分析| 校长揉捏陈若雪的奶头| 《少妇精油按摩》无码| 妈妈的朋友3| 我兄弟的妈妈免费观看电视剧| 小莹客厅激情38章至50章一区..| 汆肉的日常视频| 一家乱战1-13集大| 《炸裂吧!巨棒》免费阅读漫画