zoukankan      html  css  js  c++  java
  • 第二十八条:利用有限制通配符来提升API的灵活性

    如第二十五条所述,参数化类型是不可变的。类型Type1和Type2而言,不管Type1与Type2的关系,List<Type1>既不是List<Type2>的子类型,也不是也不是它的超类型。那么按理来说我们声明了 一个List<Object>的变量,应该只能把Object类型的对象放入其中,但是我们知道可以把Object的子类放入其中。

    同样我们声明了一个List<Number>的变量,不仅仅可以把Number类型的对象放入其中,也可以把Integer和Long等类型的对象放入其中。

    之所有可以这样做,是因为有限制的通配符给我们带来了便利。

    为了获得最大限度的灵活性,要在表示生产者或者消费者的输入参数上使用通配符类型。如果某个参数既是生产社,又是消费者,那么通配符类型对你就没有什么

    好处了:因为你需要的是严格的类型匹配,这是不用任何通配符而得到的。

    PECS 表示 producer-extends , consumer-super

    不要用通配符类型作为放回类型,也就是不要用<? extends  E>等这样的类型,而是使用<E>。因为调用一个方法,我们总是希望得到一个具体的类型结果,

    而不是让客户端程序员去猜应该返回一个什么样类型的结果。

  • 相关阅读:
    六个月的实习
    cookbook学习第二弹
    cookbook学习第一弹
    maketrans translate
    Python strip函数用法小结
    【翻译】How To Tango With Django 1.5.4 第一章
    os相关方法总结
    python基础(一)
    bash快捷键
    Linux基本命令
  • 原文地址:https://www.cnblogs.com/wangliyue/p/4480917.html
Copyright © 2011-2022 走看看