阅读jdk源码比较有意思的地方

最近比较闲,就看看jdk的部分源码,其实这也是我第一次正经的去阅读源码,我在看到arrayList源码的地方,有个注释我就觉得很有意思,来看一下:

  public ArrayList(Collection<? extends E> c) {
        elementData = c.toArray();
        if ((size = elementData.length) != 0) {
            // c.toArray might (incorrectly) not return Object[] (see 6260652)
            if (elementData.getClass() != Object[].class)
                elementData = Arrays.copyOf(elementData, size, Object[].class);
        } else {
            // replace with empty array.
            this.elementData = EMPTY_ELEMENTDATA;
        }
    }

c.toArray might (incorrectly) not return Object[] (see 6260652)这个我就很奇怪了, c.toArray()错误返回是什么吗?感觉发现来新大陆,后面的see 6260652是指jdk的bug库,我们可以去详细的看一下:https://bugs.java.com/bugdatabase/view_bug.do?bug_id=6260652
在这里解释了这个问题,感觉挺有意思的,下面还说这个bug是可以复现的,不妨来试一试:

This bug can be reproduced always.

---------- BEGIN SOURCE ----------
import java.util.*;


public class ToArray
{
    public static void main(String[] args)
    {
        List l = Arrays.asList(args);

        System.out.println(l.toArray());
        System.out.println(l.toArray(new Object[0]));
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容