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

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

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

必须将类声明为abstract或在List中实现抽象方法toArray(T []).

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

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

最佳答案 由于您使用的是泛型方法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!");
    }

    ...
}
点赞