黑马程序员技术交流社区

标题: 泛型的限定 [打印本页]

作者: 清秋    时间: 2011-11-25 15:08
标题: 泛型的限定
本帖最后由 清秋 于 2011-11-26 01:21 编辑

大家对泛型的限定如何理解?

不懂了。。
作者: 侯伟浩    时间: 2011-11-25 15:49
泛型上限:
所谓的泛型上限:
  |-  就是限制泛型的取值范围。
  |-  最高不能超过一个指定的类型

  1. public class Point<T extends Number> {
  2.         private T x;
  3.         private T y;
  4.         public Point(T x, T y) {        this.x = x;        this.y = y;}
  5.         public T getX() { return x;        }
  6.         public void setX(T x) {        this.x = x;        }
  7.         public T getY() {        return y;        }
  8. }
  9. 语句解释:
  10. 此时就限制了 Point<T> 类只能接受是Number和Number子类的对象。

  11. 测试代码:
  12. public class Test {
  13.         public static void main(String[] args) {
  14.                 Point<Integer> p1 = new Point<Integer>(12,23);  // 没问题。
  15.                 Point<String> p2 = new Point(String)("120E","40N");  //错误。
  16.         }
  17. }
复制代码
泛型下限:
所谓的泛型下限:
  |-  就是限制泛型的取值范围。
  |-  最低不能低过一个指定的类型。

  1. public class Test {
  2.         public static void main(String[] args) {
  3.                 Point<? super String> p = new Point<String>("123E","40N");
  4.         }
  5. }
复制代码
限制point类只能表示String或其以上类型的坐标
作者: 清秋    时间: 2011-11-26 01:22
hou3172568 发表于 2011-11-25 15:49
泛型上限:
所谓的泛型上限:
  |-  就是限制泛型的取值范围。

上限比下限好理解多了
作者: 楓林虹影    时间: 2011-11-26 09:47

限定通配符的上边界:vector<? extends Number>  //只能是Number的子类
限定通配符的下边界:vector<? super Integer> //只能是Integer的父类
限定符总是包括自己
这就是泛型的上下限了




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