2.42 读书
less than 1 minute read
对象通用方法
- 覆盖
equals
方法的类必须覆盖hashcode
方法, 否则违反Object#hashCode
的通用约定, 导致该类无法结合基于散列的集合正常运作
泛型
- 无限制通配符, 不确定或者不关心实际的参数类型, 可以使用问号代替
- 利用有限通配符提高API灵活性,
public void pushAll(Iterable<E> src){};
, 当使用子类型时Stack<Number> stack = new Stack<Number>(); Iterable<Integer> integers = ...;stack.pushAll(integers)
该场景会报错, 此时需要使用有限制通配符, 即方法定义为public void pushAll(Iterable<? Extends E> src){};
;定义public void popAll(Collections<E> src){};
, 则Stack<Number> stack = new Stack<Number>(); Collections<Object> objects = ...;stack.pushAll(objects)
会报错, 需要调整为public void popAll(Collections<? super E> src){};
参考