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));
        }

    运行结果:

  • 相关阅读:
    html area标签 语法
    html applet标签 语法
    html address标签 语法
    html acronym标签 语法
    html abbr标签 语法
    html a标签 语法
    mysql MAX()函数 语法
    mysql LAST()函数 语法
    mysql FIRST()函数 语法
    mysql COUNT()函数 语法
  • 原文地址:https://www.cnblogs.com/gilbertbright/p/11714334.html
Copyright © 2011-2022 走看看