美文网首页Java 杂谈
Effective Java(四) 泛型

Effective Java(四) 泛型

作者: 凌云_00 | 来源:发表于2018-02-07 14:15 被阅读0次

泛型

Tip-23 请不要在新代码中使用原生态类型

  • java1.5 版本后 就不要使用 List 而是 使用 List<String> 这种 带泛型的集合

  • 如果使用原来的集合类型,就失掉了泛型在安全性和表述型方面的所有优势

  • 原生的List 和 List<Object> 是不同的 List<Object> 并没有丢掉安全性

  • 假如不确定或不关心实际的类型参数,就可以使用一个问号代理 此乃 无限制通配符类型List<?>

  • 加入比对两个集合中的共同元素的数量-使用无限制通配符


static int numElementsInCommon(Set<?> s1,Set<?> s2){
    
    int result = 0 ;
    
    for(Object 01 : s1){
        if(s2.contains(o1)){
            result++;
        }
    }
    
    return result;
    
}
  • 不要在新代码中使用原生态类型,这条规则有两个小小的例外,两者都源于“泛型信息可以在运行时被擦除”这一事实。
  • 在类文字中必须使用原生态类型。换句话说 List.class String[].class 和 int.class 都合法,但是List<String>.class 和 List<?>.class 则不合法
  • 由于泛型信息可以在运行时删除,因此在参数化类型而非无限制通配符上使用instanceof操作符是非法的。
  • 用无限制通配符类型代替原生态类型,对instanceof 操作符的行为不会产生影响。

Tip-24 消除非受检警告

  • 用泛型编程时,会遇到许多编译警告:非受检强制转化警告,非受检方法调用警告,非受检普通数组创建警告,以及非受检转换警告
  • 要尽可能消除一切非受检警告,如果消除了所有警告,就可以确保代码是类型安全的

Tip-25 列表优先于数组

  • 数组于泛型相比,有两个重要的不同点。首先,数组是协变的,泛型是不可变的
  • 第二大区别,数组是具体化的。
  • 数组提供了运行时的类型安全,但是没有编译时的类型安全,
  • 如果你发现自己将他们混合起来使用,并且得到了编译时错误或者警告,你的第一反应是用列表代替数组

Tip-26 优先考虑泛型

  • 看不懂啊

Tip-27 优先考虑泛型方法

  • 静态工具方法尤其适合于泛型化
  • 泛型化带来类型安全
  • 泛型方法就像泛型一样,使用起来比要求客户端转换输入参数并返回值得方法来得更加安全,也更加容易。

Tip-28 利用有限制通配符来提升API的灵活性

  • java提供了一种特殊的参数化类型,称作有限制的通配符类型<? Extends E>
  • <? Extends E> 和 <? super E> 逆变和协变
  • PECS 表示 Producer-extends Consumer-super
  • 方法的参数是协变位置,返回值是逆变位置。
  • 要从泛型类取数据时,用extends;
  • 要往泛型类写数据时,用super;
  • 既要取又要写,就不用通配符(即extends与super都不用)。

Tip-29 优先考虑类型安全的异构容器

  • 看不懂

不在更新Effective 系列 很多东西都是一种感觉 并且多数知识是积累性质的,并没有在实际开发中使用,在写的新的一章时发现很多知识不应用就会遗忘,而且简单的笔记也没有实质性的帮助,所以永久性停更此系列,以后的文章应该聚焦细节,和实际生产环境的问题。书继续读,文章到此处,说不定二读,三读,会继续写下去。。。。

相关文章

  • Effective Java(四) 泛型

    泛型 Tip-23 请不要在新代码中使用原生态类型 java1.5 版本后 就不要使用 List 而是 使用 Li...

  • Effective java笔记(四),泛型

    泛型为集合提供了编译时类型检查。 23、不要在代码中使用原生态类型 声明中具有一个或多个类型参数的类或接口统称为泛...

  • Java泛型教程

    Java泛型教程导航 Java 泛型概述 Java泛型环境设置 Java泛型通用类 Java泛型类型参数命名约定 ...

  • Effective Java-泛型

    Java1.5版本中增加了泛型。在没有泛型之前,从集合中读取到的每一个对象都必须进行转换。如果不小心插入了错误类型...

  • Effective Java-泛型

    请不要在新代码中使用原生态类型 如果使用像List这样的原生态类型,就会失掉类型安全性,但是如果使用像List 这...

  • Effective Java - 第5章 泛型

    《Effective Java(第2版)》第5章 泛型 思维导图,文字版可见:https://mubu.com/d...

  • 第二十八课:泛型

    泛型出现之前 泛型出现之后 Java深度历险(五)——Java泛型

  • Java一泛型

    目录 一、设计背景 二、什么是泛型?泛型的作用? 三、泛型的原理 四、使用泛型 一、设计背景 Java集合(Col...

  • Kotlin 泛型

    说起 kotlin 的泛型,就离不开 java 的泛型,首先来看下 java 的泛型,当然比较熟悉 java 泛型...

  • 《Effective Java》——第23条:请不要在新代码中使

    本文大部分摘自《Effective Java》,示例为本人手打,IDE是eclipse。本人之前写过一篇关于泛型的...

网友评论

    本文标题:Effective Java(四) 泛型

    本文链接:https://www.haomeiwen.com/subject/zonozxtx.html