<? extends E> 和<? super E>的使用 <? extends E>的使用 Item 26 这是堆栈的公有API: public class Stack<E>{ public Stack(); public void push(E e); public E pop(); public boolean isEmpty(); public void pushAll(Iterable<E> s…
参数化类型是不可变的.对两个不同类型T1和T2而言,List<T1>与List<T2>没有父子类型关系. 考虑: public class Stack<E> { public Stack(); public void push(E e); public E pop(); public boolean isEmpty(); } 假设增加一个方法,按顺序将一系列的元素放到堆栈中: public void pushAll(Iterable<E> src) { fo…
假设你正在操作一个Rectangle类.每个矩形可以通过左上角的点和右下角的点来表示.为了保证一个Rectangle对象尽可能小,你可能决定不把定义矩形范围的点存储在Rectangle类中,而是把它放入一个辅助结构体中,Rectangle中声明一个指向它的指针就可以了: class Point { // class for representing points public: Point(int x, int y); ... void setX(int newVal); void setY(i…