首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> J2SE

使用 Java 5.0 構建自定義泛型集合

     編輯:J2SE

自定義泛型集合的設計思路

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 泛型機制,並在框架開發中靈活應用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved