[英]Implement methods of an implemented List to an ArrayList
我知道该如何处理我的编程代码,但我只是不知道为什么我们必须这样做。
我的ArrayList类实现了List <E>接口。 这意味着我必须将List接口中的所有方法复制到ArrayList类。 这是为了防止我的ArrayList类说以下错误:“ ArrayList不是抽象的,并且不会覆盖抽象方法iterator(int)”错误。 有人可以向我详细解释吗?
另外:当我在NetBeans中使用自动更正时,它在每个方法之后都说“抛出新的UnsupportedOperationException(“尚不支持。”);“。 为什么?
这是我的代码:
public class ArrayList<E> implements List<E> {
private E[] elementData;
private int elementCount;
private int capacityIncrement;
private static final int INVALID_INDEX=-1;
private static final int DEFAULT_CAPACITY = 100;
public ArrayList() {
capacityIncrement = 0;
elementData = (E[]) new Object[DEFAULT_CAPACITY];
}
public ArrayList(int capacity) {
this.capacityIncrement = 0;
this.elementData = (E[]) new Object[capacity];
}
public ArrayList(int capacity, int increment) {
this.capacityIncrement = increment;
this.elementData = (E[]) new Object[capacity];
}
private static class ArrayListIterator<E> implements Iterator<E> {
private ArrayListIterator(ArrayList c) {
elementData = c;
}
public interface List<E> {
public int size();
public boolean isEmpty();
public void clear();
public boolean contains(E element);
public void add(E element);
public boolean remove(E element);
public E elementAt(int index);
public int indexOf(E element);
public void insertElementAt(E element, int index);
public void removeElementAt(int index);
public void setElementAt(E element, int index);
public void removeDuplicates();
public void trimToSize();
public Iterator<E> iterator();
public Iterator<E> iterator(int index);
public String toString();
}
由于实现了接口,因此必须实现它声明的所有方法(除非您的类是abstract
)。 看一下有关继承的Java教程 。
您实现接口List
因此您需要实现此接口中定义的所有方法。 异常表明您应该将方法iterator()
添加到ArrayList
。
接口就像您(您的班级)签署的合同一样。 您必须履行合同中定义的所有内容,换句话说,您需要从接口实现每个(抽象)方法。
编辑:我清理了代码,现在唯一要做的就是用// TODO
注释实现每个方法。
public class ArrayList<E> implements List<E> {
private Object[] elementData;
private int elementCount;
private int capacityIncrement;
private static final int INVALID_INDEX = -1;
private static final int DEFAULT_CAPACITY = 100;
public ArrayList() {
capacityIncrement = 0;
elementData = new Object[DEFAULT_CAPACITY];
}
public ArrayList(int capacity) {
this.capacityIncrement = 0;
this.elementData = new Object[capacity];
}
public ArrayList(int capacity, int increment) {
this.capacityIncrement = increment;
this.elementData = new Object[capacity];
}
@Override
public int size() {
// TODO Auto-generated method stub
return 0;
}
@Override
public boolean isEmpty() {
// TODO Auto-generated method stub
return false;
}
@Override
public void clear() {
// TODO Auto-generated method stub
}
@Override
public boolean contains(E element) {
// TODO Auto-generated method stub
return false;
}
@Override
public void add(E element) {
// TODO Auto-generated method stub
}
@Override
public boolean remove(E element) {
// TODO Auto-generated method stub
return false;
}
@Override
public E elementAt(int index) {
// TODO Auto-generated method stub
return null;
}
@Override
public int indexOf(E element) {
// TODO Auto-generated method stub
return 0;
}
@Override
public void insertElementAt(E element, int index) {
// TODO Auto-generated method stub
}
@Override
public void removeElementAt(int index) {
// TODO Auto-generated method stub
}
@Override
public void setElementAt(E element, int index) {
// TODO Auto-generated method stub
}
@Override
public void removeDuplicates() {
// TODO Auto-generated method stub
}
@Override
public void trimToSize() {
// TODO Auto-generated method stub
}
@Override
public Iterator<E> iterator() {
// TODO Auto-generated method stub
return null;
}
@Override
public Iterator<E> iterator(int index) {
// TODO Auto-generated method stub
return null;
}
protected class ArrayListIterator<T> implements Iterator<T> {
private ArrayList<T> list;
private ArrayListIterator(ArrayList<T> list) {
this.list = list;
}
@Override
public boolean hasNext() {
// TODO Auto-generated method stub
return false;
}
@Override
public T next() {
// TODO Auto-generated method stub
return null;
}
@Override
public void remove() {
// TODO Auto-generated method stub
}
}
}
interface List<T> {
public int size();
public boolean isEmpty();
public void clear();
public boolean contains(T element);
public void add(T element);
public boolean remove(T element);
public T elementAt(int index);
public int indexOf(T element);
public void insertElementAt(T element, int index);
public void removeElementAt(int index);
public void setElementAt(T element, int index);
public void removeDuplicates();
public void trimToSize();
public Iterator<T> iterator();
public Iterator<T> iterator(int index);
public String toString();
}
接口是一种约定,规定任何实现该类的类都将提供某些功能。 这是通过指定每个方法签名来完成的(但是,通常没有方法主体,因此没有实际的实现逻辑)。 因此,如果您有一个实现该接口的类,则必须为每个方法提供实现,以便您的类履行该合同。
因为您说的是类“ implements List”,所以它必须实现List接口中定义的所有方法。 接口就像是您的类的抽象规范,它指定类可以执行的操作(其方法),而不提供有关类所包含的内容/其工作方式的详细信息
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.