我正在尝试实例化一个抽象类,但它不起作用。
abstract class Links<T> implements List<T>{
}
Links<Link> notVisitedLinks = new ArrayList<Link>();
我还测试了 Links 类不是抽象类,它告诉我以下错误消息:
Links 不是抽象类,它不会重写 List 中的抽象方法 subList(int, int)
class Links<T> implements List<T>{
}
Links<Link> notVisitedLinks = new ArrayList<Link>();
我尝试了解如何重写 subList 方法,但没有成功。
您收到错误,因为 ArrayList 与链接不匹配。尽管 ArrayList 适合 List,但它与 Links 并不完全相同,尽管 Links 扩展了 List。
一个修复可能是创建一个常规类来扩展链接并添加所需的方法。像这样:
import java.util.ArrayList;
import java.util.List;
abstract class Links<T> implements List<T> {
}
class ConcreteLinks<T> extends Links<T> {
private List<T> list = new ArrayList<>();
@Override
public int size() {
return list.size();
}
@Override
public boolean isEmpty() {
return list.isEmpty();
}
// Add the other methods from the List interface here
@Override
public T get(int index) {
return list.get(index);
}
@Override
public T set(int index, T element) {
return list.set(index, element);
}
// Add the other methods from the List interface here
@Override
public void add(int index, T element) {
list.add(index, element);
}
@Override
public T remove(int index) {
return list.remove(index);
}
// Add the other methods from the List interface here
}
public class Main {
public static void main(String[] args) {
ConcreteLinks<Link> notVisitedLinks = new ConcreteLinks<>();
notVisitedLinks.add(new Link());
// Now you can use notVisitedLinks as a list of Link objects
}
}
在此代码中:
ConcreteLinks 是一个常规类,它扩展了 Links 并填充了 List 接口所需的方法。 notVisitedLinks 是 ConcreteLinks 的一个实例,因此您可以将其视为 Link 对象的列表。