使用toArray的方法只返回Object [],而不是T []

时间:2017-12-29 14:09:15

标签: java arrays arraylist

编辑:对于将来磕磕绊绊的人,OHGODSPIDERS在评论中更好地表达了这个问题,并说,"他的意图是将方法更改为公共T [] toArray(),这会引发错误因为List的方法toArray()返回一个Object []"。问题是java不允许你(没有变通方法)创建泛型类型的数组(例如T)。

所以我试图在一个类中实现一个方法,该方法返回所包含数据的Array表示(它用于练习二叉搜索树的赋值)。这是相关的代码(我认为):

public ArrayList<T> toArrayList() {
    // TODO Auto-generated method stub.
    return this.root.toArrayList();
}

public Object[] toArray() {
    // TODO Auto-generated method stub.
    return this.toArrayList().toArray();
}

特别注意toArray()方法的返回类型。我试图找出为什么当我将返回类型设置为T[]时,Eclipse会生气并抛出错误。我认为它更有意义,因为它是T. toArrayList()toArray()方法都按照所写的方式传递提供的单元测试。

提前感谢您的帮助!如果有什么我可以澄清,请告诉我。我知道这是一个基本问题,但这是我的编码生涯中第一次谷歌没有给我一个好的答案!

我发布以下内容作为评论,但我想我也会把它放在这里,所以我也可以复制我的新代码:(如果不鼓励请告诉我,我会做出任何修改建议):

完全是@OHGODSPIDERS。对不起我不太清楚。我通读了链接,我想我现在明白我应该使用toArray(T [] a)版本。但是,当我尝试这样做时,Eclipse说我无法创建通用数组。但是,该方法究竟应该做什么呢?

    public T[] toArray(){
    return this.toArrayList().toArray(new T[0]);
}

0 个答案:

没有答案