- 不要在新代码中使用原生态类型
原生态类型就是简单的“<>”,没有任何参数类型限定,和没有使用泛型一样,之所以存在无非是为了保持前向兼容性,因为没有起到泛型应有的作用,所有不建议使用。
- 不要忽视非受检警告,并接受它
每一条受检警告都可能抛出类型转换异常,只有在明确知道不会有转换异常的时候,才可以用@SuppressWarnings 注解来消除警告,而且应该尽可能缩小注解作用范围,以免掩盖了重要的警告。
- 列表优先于数组
列表和泛型的区别有两点,其一是数组是协变得,泛型是不可变的,这就意味着,数组在运行时才会发现错误,泛型在编译时就可以判断错误;第二点是数组是具体化的,因此数组在运行时才会检查他们的元素类型约束,泛型是通过擦除来实现的,只在编译时强化类型信息,在运行时丢弃或者说擦除类型信息。因此,泛型和数组也不能很好的混用,创建泛型数组也是非法的,作为通过数组描述的可变参数和泛型也不应该同时使用。
- 优先考虑泛型
- 优先考虑使用泛型方法
- 利用有限制通配符来提升API灵活性
- 优先考虑类型安全的异构容器