zoukankan      html  css  js  c++  java
  • 关于c.toArray might (incorrectly) not return Object[] (see 6260652)的问题解答

      最近学习jdk1.8源码时,发现ArrayList(Collection<? extends E> c)这个构造函数中,有句有意思的描述:c.toArray might (incorrectly) not return Object[] (see 6260652),

    做了一些实验后均没能解释why!而后发现通过正常方式创建的Collection参数都是不会有问题的,问题出在这个Collection参数如果通过某些方式创建得到,就会出现如题的问题!

    public static void main(String[] args) {
            Integer[] array = {1, 2};
            // 通过Arrays转换成的List,保留了原本的类型
            List list = Arrays.asList(array);
            
            // 即使再将其转换为Object类型的数组,还是原本的类型
            Object[] array3 = list.toArray();
            System.out.println("通过数组转换:" + (array3.getClass() == Object[].class));
            
            // 如果是创建的集合,则类型可以转换
            List<Integer> li = new ArrayList<Integer>();
            System.out.println("通过集合转换:" + (li.toArray().getClass() == Object[].class));
        }

    运行结果:

  • 相关阅读:
    线性地址物理地址逻辑地址转换mmu
    C/c++ 宏返回值
    树的子结构
    合并两个排序的链表
    链表中倒数第k个结点
    数值的整数次方
    原码、反码与补码
    二进制中1的个数
    矩形覆盖
    变态跳台阶
  • 原文地址:https://www.cnblogs.com/gilbertbright/p/11714334.html
Copyright © 2011-2022 走看看