韩漫免费漫画在线观看方法,《好好疼爱里面》免费看,年轻漂亮的女士护士内衣,妈妈醉酒后把我当爸爸电视剧

文章 > 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基础

关注

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

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

老牛耕田陈雪全文免费阅读笔趣阁| 《炸裂吧!巨棒》免费阅读漫画| 亚洲第一大综合区的就业前景| 大杂烩(TXT)小说阅读| 妈妈和两个姨妈一起过生日| 《再来一次好吗》动漫| C2000论坛| 六房间| 轮流和两个男人一起很容易染病吗| 蜜桃成熟时2| .COM9.1.CRM| 法国空姐5大结局| 新婚夜被强伦无删减版| 偷偷在线观看免费的电视剧最新 | 俄罗斯少女2免费观看| 公与媳2电视剧免费| 十大名阴排名一览表| 摸的下身已洪水泛滥怎么办 | 粗大挺进亲女小雅小沈| 电子| 《玉尺经》完整版| 法国《监狱伦理3》| XL上司| 《美丽妻子替夫还债》剧情| 免费的行情网站WWW网页版| 《警花交换做爰》| 日产精品一线二线三线芒果| 漂亮的小瘦子3| 女人一旦尝到粗硬的心理 | 坤坤寒入桃子里电视剧| 开会桌下把荫蒂添的好多水| 性与艺术| 乖再分开点小说免费阅读| 我在古代富甲一方| 公交车上萌蒂添的好舒服H漫画| 苏畅| 日本大片又大又好看的PPT| 《熟妇的荡欲》HD中字| 《献身》李丽珍| HTTP://WWW.XJXJ...| 不戴套瑜伽教练3)