第 29 条:优先考虑泛型

2021-05-10  本文已影响0人  综合楼
优先考虑泛型.jpeg
未使用泛型
// Object-based collection - a prime candidate for generics
public class Stack {
    private Object[] elements;
    private int size = 0;
    private static final int DEFAULT_INITIAL_CAPACITY = 16;
    public Stack() {
        elements = new Object[DEFAULT_INITIAL_CAPACITY];
    }
    public void push(Object e) {
        ensureCapacity();
        elements[size++]=e;
    }
    public Object pop() {
        if (size == 0)
            throw new EmptyStackException();
        Object result = elements[--size];
        elements[size] = null;// Eliminate obsolete reference
        return result;
    }
    public boolean isEmpty() {
        return size == 0;
    }
    private void ensureCapacity() {
    if (elements.length == size)
        elements = Arrays.copyOf(elements, 2* size+1);
    }
}

使用泛型第一种
// Object-based collection - a prime candidate for generics
public class Stack<E> {
    private E[] elements;
    private int size = 0;
    private static final int DEFAULT_INITIAL_CAPACITY = 16;
    public Stack() {
        elements =(E[]) new Object[DEFAULT_INITIAL_CAPACITY];
    }
    public void push(E e) {
        ensureCapacity();
        elements[size++]=e;
    }
    public E pop() {
        if (size == 0)
            throw new EmptyStackException();
        E result = elements[--size];
        elements[size] = null;// Eliminate obsolete reference
        return result;
    }
    public boolean isEmpty() {
        return size == 0;
    }
    private void ensureCapacity() {
    if (elements.length == size)
        elements = Arrays.copyOf(elements, 2* size+1);
    }
}

使用泛型第二种
// Object-based collection - a prime candidate for generics
public class Stack<E> {
    private Object[] elements;
    private int size = 0;
    private static final int DEFAULT_INITIAL_CAPACITY = 16;
    public Stack() {
        elements = new Object[DEFAULT_INITIAL_CAPACITY];
    }
    public void push(Object e) {
        ensureCapacity();
        elements[size++]=e;
    }
    public E pop() {
        if (size == 0)
            throw new EmptyStackException();
        E result =(E) elements[--size];
        elements[size] = null;// Eliminate obsolete reference
        return result;
    }
    public boolean isEmpty() {
        return size == 0;
    }
    private void ensureCapacity() {
    if (elements.length == size)
        elements = Arrays.copyOf(elements, 2* size+1);
    }
}

上一篇下一篇

猜你喜欢

热点阅读