最近学习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));
}

运行结果:

关于c.toArray might (incorrectly) not return Object[] (see 6260652)的问题解答的更多相关文章

  1. @responsebody注解的作用就是让viewresolver不起作用,不返回视图名称而是直接返回的return object

    @responsebody注解的作用就是让viewresolver不起作用,不返回视图名称而是直接返回的return object 2.也可以再方法上添加@ResponseBody注解, 用于这个类里 ...

  2. js arrow function return object

    js arrow function return object bug filterData: { type: Object, default: () => {}, required: true ...

  3. ES6 Arrow Function return Object

    ES6 Arrow Function return Object https://github.com/lydiahallie/javascript-questions/issues/220#issu ...

  4. JavaScript Return Object.Type

    var getType = function(obj) { if (obj == null) { return String(obj); } return typeof obj === 'object ...

  5. Why does typeof array with objects return “Object” and not “Array”?

    https://stackoverflow.com/questions/4775722/check-if-object-is-an-array One of the weird behaviour a ...

  6. 常用数据结构-线性表及Java 动态数组 深究

    [Java心得总结六]Java容器中——Collection在前面自己总结的一篇博文中对Collection的框架结构做了整理,这里深究一下Java中list的实现方式 1.动态数组 In compu ...

  7. ArrayList<E>源码分析

    ArrayList是按照线性表结构实现的 ArrayList的主要继承结构 public class ArrayList<E> extends AbstractList<E> ...

  8. Java集合之ArrayList

    ArrayList ArrayList是最常见以及每个Java开发者最熟悉的集合类了,顾名思义,ArrayList就是一个以数组形式实现的集合,以一张表格来看一下ArrayList里面有哪些基本的元素 ...

  9. 【JUC】JDK1.8源码分析之CopyOnWriteArrayList(六)

    一.前言 由于Deque与Queue有很大的相似性,Deque为双端队列,队列头部和尾部都可以进行入队列和出队列的操作,所以不再介绍Deque,感兴趣的读者可以自行阅读源码,相信偶了Queue源码的分 ...

随机推荐

  1. ES6 学习 -- Set和Map数据结构

    一.Set对象数据结构 1.Set数据结构类似数组,但是其每个成员都是唯一值,没有重复,且Set本身是一个构造函数,用来生成Set数据结构,用法如下: const setData = new Set( ...

  2. Linux内存 mem 和 swap

    摘抄并用于自查 Linux mem/swap/buffers/cached区别 free命令相对于top,提供了更简洁的查看系统内存使用情况: # free -m mem:表示物理内存统计 buff/ ...

  3. js数组方法 slice()和splice()

    说实在我之前都不怎么分的清这个两个函数,因为这两个函数名字那么像,经常我就弄混了,平常使用的时候都先查一下我需要使用的实际是哪个函数.这样不说很浪费时间,但是也是影响了开发效率,所以我决定今天就彻底区 ...

  4. META标签的定义与使用(一、HTTP标题信息(http-equiv))

    META标签分两大部分:HTTP标题信息(http-equiv)和页面描述信息(name). 一.http-equiv类似于HTTP的头部协议,它回应给浏览器一些有用的信息,以帮助正确和精确地显示网页 ...

  5. sql (3) where

    WHERE 子句用于规定选择的标准.语法SELECT 列名称 FROM 表名称 WHERE 列 运算符 值 引号的使用请注意,我们在例子中的条件值周围使用的是单引号. SQL 使用单引号来环绕文本值( ...

  6. Docker的镜像 导出导入

    查看当前已经安装的镜像 vagrant@vagrant:~$ sudo docker images REPOSITORY TAG IMAGE ID CREATED SIZE mysql 5.7.22 ...

  7. win 安装composer (详细教程)

    Composer是PHP的一个依赖管理工具,申明项目所依赖的代码库,它会在项目中为你安装,所以在实际项目开发中很方便,那么如何安装呢?今天就与大家分享下. 1首先下载好Composer,文件为exe类 ...

  8. 框架:Flutter(移动应用程序开发框架)

    ylbtech-框架:Flutter(移动应用程序开发框架) Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面. Flutter可以与现有的代码一起工作. ...

  9. EXCEL函数常用技巧浅析

    EXCEL函数常用技巧浅析 EXCEL函数是一门趣味性非常大的游戏,此贴内容基本上为总结前人经验而来.废话不多说,我们现在走入正题. 一:判断数值奇偶性 1.1  ISODD(number) 判断一个 ...

  10. sql 查询问题

    在做数据导出时候,当某个表某字段含有单引号时候老是报错,所以要排除这种情况: sql查询某表某字段值带单引号情况 select 主键码 from 馆藏书目库 where 题名 like '%''%' ...