我有一个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/

10-12 02:54