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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ς高眼光の目标 中级黑马   /  2014-3-21 15:53  /  765 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

什么情况下使用上限,和下限呢?

1 个回复

倒序浏览
假设一个方法中能接受的泛型对象只能是数字类型,则在定义这个方法参数接受对象的时候就必须指定泛型的上限。因为所有的数字包装类都是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. }
复制代码

评分

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

查看全部评分

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