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

关注

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

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

女朋友太骚了每次进去都觉得很疼| 小寡妇在线观看免费播放电视剧| 美国大片BGM大全播放| 麻花传剧MV在线看免费版高清| 鲁鲁影院免费观看电视剧电影 | 《请好好疼爱里面》免费观看| 真人刺激战场40分钟电视剧| 女列车长丰满乳峰| 《插曲的痛免费观看第二季》| 一品国精和二品国精的文化意义| 7777影院免费观看电视剧大全 | 17·C1起草视频| 描写燕子的古诗词| 臣卜扌果扌圭辶鬲爸爸| 红豆视频| 妈妈在家穿超薄内裤的注意事项 | 白木优子| 爸爸经常出差妈妈给我生孩子| 双乳被四个男人吃奶H文| 男生困困进女生困困洞视频| 韩国午夜理伦三级| 美国灭火宝贝3| 无法抗拒的你ID中字| 小男生趴着扭屁股很舒服怎么回事| 含着奶做着爱太舒服了| 乳头被男人吸过乳头会皲裂吗| 第一次的滋味免费观看电视剧 | 床3| 狼人加鲁鲁兽天赋澳彩心水| 女生把QQ放在一起的头像| 公在厨房撕开奶罩吸奶头| 中国记协| 丰满的儿女小月的身世与背景介绍| 张柏芝门户大开照| 蜜桃成熟时| 白雪公主2019| 家公给我治疗5中字| 麻花传MV在线看免费观看电视剧| 日韩电影| 倫理片《亂倫》| 人口兽猪马狗第1集