黑马程序员技术交流社区

标题: 关于泛型的小问题 [打印本页]

作者: ς高眼光の目标    时间: 2014-3-21 15:53
标题: 关于泛型的小问题
什么情况下使用上限,和下限呢?
作者: 乔钰博    时间: 2014-3-21 17:08
假设一个方法中能接受的泛型对象只能是数字类型,则在定义这个方法参数接受对象的时候就必须指定泛型的上限。因为所有的数字包装类都是Number的子类,所以代码如下
  1. public class Test {
  2.         public static void main(String[] args) {
  3.                 Point<Integer> p = new Point<Integer>();
  4.                 Point<Double> p1 = new Point<Double>();
  5.                 p.setVar(100);
  6.                 p1.setVar(100.1);
  7.                 print(p);
  8.                 print(p1);
  9.         }
  10.        
  11.         public static void print(Point<? extends Number> p){
  12.                 System.out.println(p.getVar());
  13.         }
  14. }
复制代码


当使用的泛型只能在本类或者其父类类型上应用时,就必须使用泛型的范围下限进行配置:
  1. public class Test {
  2.         public static void main(String[] args) {
  3.                 Point<String> p = new Point<String>();
  4.                 Point<Object> p1 = new Point<Object>();
  5.                 p.setVar("abc");
  6.                 p1.setVar(new Object());
  7.                 print(p);
  8.                 print(p1);
  9.         }
  10.        
  11.         public static void print(Point<? super String> p){
  12.                 System.out.println(p.getVar());
  13.         }
  14. }
复制代码





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