我有一个扩展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!");
}
...
}