必须将类声明为abstract或实现抽象方法toArray

时间:2017-04-01 19:41:38

标签: java

我有一个Foo类扩展AbstractList并实现List。这个类实现了一些List方法,但有些只是抛出UnsupportedOperationException

toArray是后者之一,虽然编译器没有抱怨其他未实现的方法,但它抱怨toArray有错误:

Class must either be declared abstract or implement abstract method toArray(T[]) in List

public class Foo extends AbstractList implementst List  {
    ...
     public <T> T[] toArray(T[] a) throws UnsupportedOperationException {
        throw new UnsupportedOperationException(error);
    }
}

这里有什么问题以及为什么编译器仍然认为toArray(T[])方法没有实现?

2 个答案:

答案 0 :(得分:2)

由于您使用的是泛型方法public T [] toArray(T [] a),您应该将参数添加到类签名中,并使其分别扩展和实现参数化的类和接口,而不是原始的。然后它将编译:

public class Foo<T> extends AbstractList<T> implements List<T> {

    @Override
    public <E> E[] toArray(E[] a) throws UnsupportedOperationException {
        throw new UnsupportedOperationException("Error!");
    }

    ...
}

答案 1 :(得分:-1)

此代码编译:

import java.util.AbstractList;
import java.util.List;

public class Foo extends AbstractList implements List  {

    @Override
    public Object[] toArray(Object[] a) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public Object get(int index) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public int size() {
        // TODO Auto-generated method stub
        return 0;
    }
}

如果您使用java.util包。