美文网首页
阅读jdk源码比较有意思的地方

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

作者: 1994_老叶 | 来源:发表于2019-04-09 18:10 被阅读0次

最近比较闲,就看看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]));
    }
}

相关文章

网友评论

      本文标题:阅读jdk源码比较有意思的地方

      本文链接:https://www.haomeiwen.com/subject/hqpiiqtx.html