A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yuon11937 中级黑马   /  2014-3-10 22:54  /  1255 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

比如说:public static <AnyType extends Comparable<? super AnyType>>,这里的extends和super分别限定的是谁的类型?

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

5 个回复

倒序浏览
AnyType extends Comparable//可以接收Comparable类型或者Comparable的子类型。属于上限
? super AnyType //可以接收AnyType类型或者AnyType的父类型。属于下限

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
extends 是限定AnyType 要有继承Comparable ,  然后实现这个Comparable的接口的要是AnyType的父类或者AnyType
回复 使用道具 举报
本帖最后由 透过生活 于 2014-3-11 16:08 编辑

泛型
JDK1.5的新特性
extends是向上限定,表示定义的泛型必须是某一类的,或者是某一类的子类
super是想下限定,表示定义的泛型必须是某一类的,或者是某一类的父类
这里,extends限定的是Comparable或者是Comparable的子类
      super限定的是AnyType或者是AnyType的父类

泛型通配符 ?
使用通配符?可以使用其他各种参数话类型,通配符定义的变量主要用作引用,可以调用与参数无  关的方法,不能调用与参数有关的方法。
向上限定: Vector<? extends Number>= new Vecotor<Integer>();
向下限定: Vector<? super Integer>= new Vecotor<Number>()
  提示,限定通配符包括自己。
泛型可以定义在类上:
public class Generic <E>{}
类上定义的泛型,不能使用在静态方法
泛型也可以定义在方法上:
public <E> void generic(){}  

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
有两种,上限<? extends Person>和下限<? super Person>;
回复 使用道具 举报
你可以这么想,既然是泛型的限定,那么我既要实现泛型,也要实现限定,首先先说上限。
什么叫做上限,你可以理解为最大的,或最高层的。既然有上限,值要我们不超越他不就行了吗,
所以我们可以这么写<? extends Fu>。?表示泛型(但问号代表的内容必须是Fu的子类),Fu表示上限,
再说下限,,同样道理,下限可写为<? super Zi>。只要是Zi的上层就行

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马