当前位置:  开发笔记 > 编程语言 > 正文

为什么EnumMap实现会检查密钥的超类?

如何解决《为什么EnumMap实现会检查密钥的超类?》经验,为你挑选了1个好方法。

您可以使用实体声明enum常量以自定义其行为

enum Bar {
    NORMAL, CUSTOM {
        @Override
        public String toString() {
            return "different";
        }
    };
}

这些常量实现为该enum类型的子类.

枚举常量的可选类体隐式定义了一个匿名类声明(第15.9.5节),该声明扩展了直接封闭的枚举类型.

为了使EnumMap映射能够处理所有enum常量,因此需要通过检查键的超类是enum用于初始化EnumMap(the keyType)的类型来检查这种可能性.



1> Sotirios Del..:

您可以使用实体声明enum常量以自定义其行为

enum Bar {
    NORMAL, CUSTOM {
        @Override
        public String toString() {
            return "different";
        }
    };
}

这些常量实现为该enum类型的子类.

枚举常量的可选类体隐式定义了一个匿名类声明(第15.9.5节),该声明扩展了直接封闭的枚举类型.

为了使EnumMap映射能够处理所有enum常量,因此需要通过检查键的超类是enum用于初始化EnumMap(the keyType)的类型来检查这种可能性.


*仅供参考:*具有此类主体的枚举类似于匿名类.你会看到,如果你看一下编译好的.class文件,例如这里显示的类将创建`Bar.class`和`Bar $ 1.class`.
推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有