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){};

参考

Tags:

Categories:

Updated: