我有一个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[])
方法没有实现?
答案 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
包。