首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EnumMap Typesafe吗?

EnumMap Typesafe吗?
EN

Stack Overflow用户
提问于 2016-07-01 02:19:51
回答 1查看 209关注 0票数 1

[我投票支持重新开放这个社区。What are the reasons why Map.get(Object key) is not (fully) generic的问题确实找出了问题的根源。但对我来说,堆栈溢出是关于回答问题、访问工作示例代码和支持API使用的特定实例--而不是创建一个具有独特根源的规范。我找不到另一篇文章,也许是因为它的标题。创建Enum是为了提供命名常量的安全替代方案。这个问题击败了这个好处-- API中没有提到,也没有编译器警告。为什么要将安全级别降低到命名常量以下?对于enum用户来说,这个问题很有用--它在google上是第一位的。]

这是要编译的吗?确实如此,尽管我从一个使用类型EnumDelta初始化的enumMap中获得了一个不同类型的枚举成员( EnumAlpha )。我认为,作为泛型类型,EnumMap将保证EnumAlpha的类型安全性。

代码语言:javascript
复制
    import java.util.EnumMap;

    class Enum {

            static enum EnumAlpha { ALPHA, BETA; }
            static enum EnumDelta { DELTA, EPSILON; }



            static EnumMap<EnumAlpha, String> enumMap = null;

            public static void main (String[] args) {

                    enumMap = new EnumMap<EnumAlpha, String>(EnumAlpha.class);
                    String string = "foo";

                    enumMap.put(EnumAlpha.ALPHA, string);

                    //why does this line compile?
                    System.out.println(enumMap.get(EnumDelta.DELTA)); 


            }


    }

程序输出:

EN

回答 1

Stack Overflow用户

发布于 2016-07-01 02:57:51

由于这个()中的解释,对于EnumMap.get(),答案是EnumMap.get no linked post

通过添加以下行,我能够避免难以理解的空指针异常:

代码语言:javascript
复制
     assert enumMap.containsKey(EnumDelta.EPSILON);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38136028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档