toArray方法不在扩展ArrayList<>的类中工作

时间:2013-02-22 13:26:11

标签: java arrays arraylist extends

我有一个名为“Table”的类,它扩展了ArrayList。在这个类中,我有一个名为toArray()的方法。每当我编译我得到错误:“表中的toArray()无法在java.util.List中实现toArray()返回类型void与java.lang.Object []”

不兼容

这是Table类:

public class Table extends ArrayList<Row>
{
public ArrayList<String> applicants;
public String appArray[];
public String appArray2[] = {"hello", "world","hello","world","test"};

/**
 * Constructor for objects of class Table
 */
public Table()
{
    applicants = new ArrayList<String>();
}

public void addApplicant(String app)
{
    applicants.add(app);
    toArray();
}

public void toArray()
{
    int x = applicants.size();
    if (x == 0){ } else{
    appArray=applicants.toArray(new String[x]);}
}

public void list() //Lists the arrayList
{
    for (int i = 0; i<applicants.size(); i++)
    {
        System.out.println(applicants.get(i));
    }
}

public void listArray() //Lists the Array[]
{
    for(int i = 0; i<appArray.length; i++)
    {
        System.out.println(appArray[i]);
    }
}

}

任何建议都会非常感激!

4 个答案:

答案 0 :(得分:11)

一般建议:不要从非客户端子类化的类扩展。 ArrayList就是这样一个类的一个例子。而是定义您自己的类,该类实现List接口并包含ArrayList以重用其功能。这是装饰器模式。

具体建议:toArrayArrayList中定义的方法,您不能使用不同的返回类型覆盖它。

答案 1 :(得分:2)

这是因为ArrayList实现的Collection已经声明了toArray()方法。该方法返回Object[],这与您的方法的返回类型void不同,因此它不能作为覆盖。

您的方法似乎做了一些完全不同的事情,因此最好的解决方案就是重命名它。

答案 2 :(得分:1)

您正在重载一个名为toArray的方法。

尝试将其称为其他内容,例如convertToMyArray()

答案 3 :(得分:0)

我不知道你想要完成什么,但你的方法看起来应该是这样的。

@Override
public Object[] toArray(){
      return applicants.toArray();
   }
}