黑马程序员技术交流社区

标题: 泛型的限界有哪几种形式? [打印本页]

作者: yuon11937    时间: 2014-3-10 22:54
标题: 泛型的限界有哪几种形式?
比如说:public static <AnyType extends Comparable<? super AnyType>>,这里的extends和super分别限定的是谁的类型?
作者: 林梦    时间: 2014-3-10 23:12
AnyType extends Comparable//可以接收Comparable类型或者Comparable的子类型。属于上限
? super AnyType //可以接收AnyType类型或者AnyType的父类型。属于下限

作者: 榨菜    时间: 2014-3-10 23:13
extends 是限定AnyType 要有继承Comparable ,  然后实现这个Comparable的接口的要是AnyType的父类或者AnyType
作者: 透过生活    时间: 2014-3-11 12:46
本帖最后由 透过生活 于 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(){}  

作者: 一年_Hei    时间: 2014-3-11 16:17
有两种,上限<? extends Person>和下限<? super Person>;
作者: 胡文彬    时间: 2014-3-11 16:28
你可以这么想,既然是泛型的限定,那么我既要实现泛型,也要实现限定,首先先说上限。
什么叫做上限,你可以理解为最大的,或最高层的。既然有上限,值要我们不超越他不就行了吗,
所以我们可以这么写<? extends Fu>。?表示泛型(但问号代表的内容必须是Fu的子类),Fu表示上限,
再说下限,,同样道理,下限可写为<? super Zi>。只要是Zi的上层就行




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2