码迷,mamicode.com
首页 > 编程语言 > 详细

Java 通配符类型

时间:2016-07-09 02:00:25      阅读:286      评论:0      收藏:0      [点我收藏+]

标签:

Java 通配符类型

@author ixenos

 

 

  • 通配符类型
    • 通配符的子类型限定(?都是儿孙)

      • <? extends T>
      • Pair<? extends Employee> managerrr = new Pair<Manager>(ceo,cfo); //Manager是Employee子类,这里协变了(泛型的通配符类型可协变,而一般的泛型不可协变)

      • 类型Pair<? extends Employee>的方法: //?是Manager的子类们
        • void setFirst(? extends Employee) //不可调用,编译器只知道?的取值范围是儿孙,不知道具体是啥类型(?拒绝传递任何特定的类型)
        • ? extends Employee getFirst()   //可调用,返回值是可协变的,将任意Employee子类型的返回值传递给Employee引用就是协变(体现了多态性)
    • 通配符的超类型限定(?都是祖宗)
      • <? super T>
      • 类型Pair<? super Manager>的方法: //?是Manager的父类们
        • void setFirst(? super Manager) //可调用,编译器不知道具体形参是,不能调用Employee对象,因为它不一定是爸爸,但可用任意Manager对象或其子类
        • ? super Manager getFirst()   //不可调用,返回类型是开放式的爸爸,可能类中修改了也不一定,不能保证类型安全,只能返回Object

 

 

 

        

 

Java 通配符类型

标签:

原文地址:http://www.cnblogs.com/ixenos/p/5655046.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!