Java 5.0 引入泛型後,開發者可以創建類型安全的自定義集合類。本文通過實例演示如何實現一個簡單的泛型列表,並探討關鍵設計要點。
public interface MyList<E> {
void add(E element);
E get(int index);
int size();
Iterator<E> iterator();
}
public class MyArrayList<E> implements MyList<E> {
private static final int DEFAULT_CAPACITY = 10;
private Object[] elements;
private int size = 0;
public MyArrayList() {
elements = new Object[DEFAULT_CAPACITY];
}
@Override
public void add(E element) {
ensureCapacity();
elements[size++] = element;
}
@SuppressWarnings("unchecked")
@Override
public E get(int index) {
checkIndex(index);
return (E) elements[index];
}
@Override
public int size() { return size; }
@Override
public Iterator<E> iterator() {
return new Iterator<E>() {
private int cursor = 0;
@Override public boolean hasNext() { return cursor < size; }
@SuppressWarnings("unchecked")
@Override public E next() { return (E) elements[cursor++]; }
};
}
private void ensureCapacity() {
if (size == elements.length) {
elements = Arrays.copyOf(elements, size * 2);
}
}
private void checkIndex(int index) {
if (index < 0 || index >= size) throw new IndexOutOfBoundsException();
}
}
Object[],取值時強制轉型。new E[10],只能用 Object[] 代替。<? extends T> 和 <? super T> 以增強 API 靈活性。MyList<String> list = new MyArrayList<>();
list.add("Hello");
list.add("World");
for (String s : list) {
System.out.println(s);
}
掌握自定義泛型集合的實現,有助於深入理解 Java 泛型機制,並在框架開發中靈活應用。