Java Heap Pollution

参考

The Java™ Tutorials -
wikipedia - Heap pollution

概念

下面这段话来自维基百科

In the Java programming language, heap pollution is a situation that arises when a variable of a parameterized type refers to an object that is not of that parameterized type. This situation is normally detected during compilation and indicated with an unchecked warning. Later, during runtime heap pollution will often cause a ClassCastException.

大意就是, Heap Pollution指的是当一个泛型类引用实际指向了一个不是该引用继承结构内的对象实例. 即引用类型并不是实际对象的同类, 或者其父类. 这种情况通常会在运行时造成ClassCastException异常.

例子

    public static void rawType(){
        Set set = new HashSet<String>();
        // 因为Raw Type不会像Set<?>一样被编译器进行安全检查
        // 所以会允许添加任何对象
        set.add(20);    // warning
        Iterator<String> iterator = set.iterator(); // warning
        while (iterator.hasNext()){
            // Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
            String string = iterator.next();
            // 如果像下面这样调用, 不涉及(String)类型转换
            // 不会报错
            // iterator.next();
        }
    }

    public static void objectCast(){
        List<String> stringList;
        List<Integer> integerList = new ArrayList<>();
        Object obj = integerList;
        stringList = (List<String>) obj; // warning
        stringList.add("Hello");    // no warning
        // Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
        Integer integer = integerList.get(0);
    }

@SafeVarargs 注解

只是去除编译器的警告而已.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • **2014真题Directions:Read the following text. Choose the be...
    又是夜半惊坐起阅读 10,131评论 0 23
  • 生命中,有无数个孤独的时刻,你都在忙什么。世间,有无数种孤独的方式,你选择了哪一种? 近来看到一句话:越努力越孤独...
    雁儿与安阅读 1,168评论 0 3
  • 异虫之变 第一幕 异虫病毒 第二章 快跑!逃跑! 我捡起那把稿子,心里想的第一件事,快跑!跑到东边的...
    胜利者句国豪阅读 201评论 0 0
  • 05 行走的足迹 我一直就有一个梦想,就是有一天能把自己想去的地方都走个遍。 (1) 我是一个向往自由的射手座,不...
    穆念晴阅读 213评论 1 1
  • 一切都在随缘,看过大冰和他朋友们的故事后,才知道在今天这样一个朝九晚五的快节奏时代里,还存在着有另外一种奇怪且有独...
    不识煙火阅读 188评论 0 0