我有一个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[])
方法未实现? 最佳答案
由于您使用的是通用方法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!");
}
...
}
关于java - 类必须声明为抽象或实现抽象方法toArray,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43161217/