Item 31. Wildcard Type
import java.util.Collection;
class Stack<E> {
// ...
public void push(E e) {
elements[size++] = e;
}
public void pushAll(Iterable<E> src) {
for (E e : src) {
push(e);
}
}
public void pop(E e) {
E result = elements[--size];
elements[size] = null;
return result;
}
public void popAll(Collection<E> dst) {
while (!isEmpty()) {
dst.add(pop());
}
}
}
class Main {
public static void main(String[] args) {
Stack<Number> numberStack = new Stack<>();
Iterable<Integer> integers = ...;
numberStack.pushAll(integers); // μ»΄νμΌ μλ¬, Iterable<Integer>λ Iterable<Number>μ νμ νμ
μ΄ μλ
Collection<Object> objects = ...;
numberStack.popAll(objects); // μ»΄νμΌ μλ¬, Collection<Object>λ Collection<Number>μ νμ νμ
μ΄ μλ
}
}PECS(Producer-Extends, Consumer-Super)
νμ
λ§€κ°λ³μ vs μμΌλμΉ΄λ
Last updated