国产成人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基础

关注

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

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

打赌输了任意处罚一个暑假作文| 丰满的儿女小月的身世与背景介绍| 97人妻人人躁人人玩人人澡AV| 欧美大片PPT免费PPT| 学校停电被同桌C了3次| 《性呻吟》伦理| 黑料不迷路万里长征| 鲁鲁射击免费播放电视剧全部| 《年轻朋友的妻子3》| 国产在线观看免费全集电视剧网站| 双腿无力合拢红肿外翻男生原因| 公共场合高潮(H)公交车| 《请好好疼爱里面》免费观看| 妈妈洗澡不把门关紧暗示什么 | 久久精品亚洲AV无码洋洋| 《温柔的老师》电影免费观看| 《湿点》未增减板相似| 医生一直揉白带湿漉漉的正常吗 | 学长突然把自慰器开到最大 | 灭火宝贝2:决战丛林| 强伦女教师2:伦理| 干柴烈火1982年美国版| 动漫| 啵啵浏览器| 私处按摩SPA养生精油| 蜜桃成熟时国语| 女性左腿又开腿肚子中间疼视频| 麻花传剧原创MV免费播放小米车| 《法国空乘5》观看| 美女和帅哥一起努力生产豆浆| 黑料| 《炸裂吧!巨棒》免费阅读漫画| 啵啵浏览器| 星空无限MV国产剧苏畅| 15岁初中生免费观看| 父女大作战1-32集免费| 翁止熄痒苏钥第9章的内容| 7777影院免费观看电视剧大全| 老头下边又粗又大又硬| 可儿的奶水喂爸爸吃可以吗| AV网站在线观看