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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© P李勇 中级黑马   /  2015-4-4 00:38  /  769 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

泛型限定:
上限:?extends E:可以接收E类型或者E的子类型对象。
下限:?super E:可以接收E类型或者E的父类型对象。

那么什么时候使用呢???如何使用呢??谁能举例

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1 很给力!

查看全部评分

6 个回复

倒序浏览
坐等大神镇楼·!
回复 使用道具 举报
额,也是说不清楚呀,不过应该底层二叉树数据结构的集合,需要进行自定义排序或者默认排序,会用到这个东西。
回复 使用道具 举报
kapp_tolo 发表于 2015-4-4 00:42
额,也是说不清楚呀,不过应该底层二叉树数据结构的集合,需要进行自定义排序或者默认排序,会用到这个东西 ...

{:3_51:}有例子吗
回复 使用道具 举报
  1. package pack;
  2. // 泛型的限定:
  3.         // 上限:? extends E 可以接受E类型或E的子类类型对象。
  4.         // 下限:? super E 可以接受E类型或者E的父类类型对象。
  5. // 用了下限,这个集合只能当object型用了,必须进行强转
  6. import java.util.ArrayList;
  7. import java.util.Iterator;
  8. class Person{
  9.         private String name;
  10.         Person(String name){
  11.                 this.name=name;
  12.         }
  13.         public String getName(){
  14.                 return name;
  15.         }
  16. }
  17. class Student extends Person{
  18.         Student(String name){
  19.                 super(name);
  20.         }
  21. }
  22. class GenericDemo7{
  23.         public static void main(String[] args){
  24.                 ArrayList<Person> al=new ArrayList<Person>();
  25.                 al.add(new Person("abc :1"));
  26.                 al.add(new Person("abc :2"));
  27.                 al.add(new Person("abc :3"));
  28.                 al.add(new Person("abc :4"));
  29.                 printColl1(al);
  30.                 ArrayList<Student>la=new ArrayList<Student>();
  31.                 la.add(new Student("abc :1"));
  32.                 la.add(new Student("bcd :2"));
  33.                 la.add(new Student("cde :3"));
  34.                 la.add(new Student("def :4"));
  35.                 printColl2(la);
  36.         }
  37.         public static void printColl1(ArrayList<? extends Person> al){
  38.                 Iterator<? extends Person>it=al.iterator();
  39.                 while(it.hasNext()){
  40.                         System.out.println(it.next().getName());
  41.                 }
  42.         }
  43.         public static void printColl2(ArrayList<? super Student> al){
  44.                 Iterator<? super Student>it=al.iterator();
  45.                 while(it.hasNext()){
  46.                         Student s=(Student)it.next();
  47.                         System.out.println(s.getName());
  48.                 }
  49.         }
  50. }
复制代码
回复 使用道具 举报

{:3_51:}{:3_51:}学习一下
回复 使用道具 举报
正在做这一章的日记,整理完了告诉你
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马