当前位置:  开发笔记 > 编程语言 > 正文

Java泛型和数组初始化

如何解决《Java泛型和数组初始化》经验,为你挑选了1个好方法。

以下是什么解释:

public class GenericsTest {
    //statement 1
    public ArrayList[] lists;

    public GenericsTest()
    {
            //statement 2
        lists = new ArrayList[4];
    }
}

编译器接受语句1.语句2由编译器标记为"通用数组创建".

我已经看到一个关于禁止泛型数组的一个很好的解释是这个,认为由于数组是协变的,而泛型不是你可以破坏泛型类型,如果你允许泛型数组.

撇开关于这种语言是否应该极端地在泛型的处理方面造成这种复杂的不一致性的争论,无论你怎么努力都不让自己开枪(如果有人知道关于亲戚的任何好的讨论)问题的优点/缺点请发帖,我有兴趣看看论点),如果(2)不是,为什么要声明(1)?



1> Sven Lilient..:

这是因为你无法创建,但你可以使用它们:

public class GenericsTest {
    //statement 1
    public ArrayList[] lists;

    public GenericsTest()
    {
        //statement 2
        lists = new ArrayList[4];
        //statement 3
        lists[0].add(new Integer(0));
        //statement 4
        lists[0].add(new String(""));
    }
}

语句3是可能的,语句4将导致编译器错误.

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有