黑马程序员技术交流社区
标题: 泛型限定的问题 [打印本页]
作者: P李勇 时间: 2015-4-4 00:38
标题: 泛型限定的问题
泛型限定:
上限:?extends E:可以接收E类型或者E的子类型对象。
下限:?super E:可以接收E类型或者E的父类型对象。
那么什么时候使用呢???如何使用呢??谁能举例
作者: P李勇 时间: 2015-4-4 00:40
坐等大神镇楼·!
作者: kapp_tolo 时间: 2015-4-4 00:42
额,也是说不清楚呀,不过应该底层二叉树数据结构的集合,需要进行自定义排序或者默认排序,会用到这个东西。
作者: P李勇 时间: 2015-4-4 01:06
{:3_51:}有例子吗
作者: 艺多不压身丶 时间: 2015-4-4 08:29
- package pack;
- // 泛型的限定:
- // 上限:? extends E 可以接受E类型或E的子类类型对象。
- // 下限:? super E 可以接受E类型或者E的父类类型对象。
- // 用了下限,这个集合只能当object型用了,必须进行强转
- import java.util.ArrayList;
- import java.util.Iterator;
- class Person{
- private String name;
- Person(String name){
- this.name=name;
- }
- public String getName(){
- return name;
- }
- }
- class Student extends Person{
- Student(String name){
- super(name);
- }
- }
- class GenericDemo7{
- public static void main(String[] args){
- ArrayList<Person> al=new ArrayList<Person>();
- al.add(new Person("abc :1"));
- al.add(new Person("abc :2"));
- al.add(new Person("abc :3"));
- al.add(new Person("abc :4"));
- printColl1(al);
- ArrayList<Student>la=new ArrayList<Student>();
- la.add(new Student("abc :1"));
- la.add(new Student("bcd :2"));
- la.add(new Student("cde :3"));
- la.add(new Student("def :4"));
- printColl2(la);
- }
- public static void printColl1(ArrayList<? extends Person> al){
- Iterator<? extends Person>it=al.iterator();
- while(it.hasNext()){
- System.out.println(it.next().getName());
- }
- }
- public static void printColl2(ArrayList<? super Student> al){
- Iterator<? super Student>it=al.iterator();
- while(it.hasNext()){
- Student s=(Student)it.next();
- System.out.println(s.getName());
- }
- }
- }
复制代码
作者: P李勇 时间: 2015-4-4 13:46
{:3_51:}{:3_51:}学习一下
作者: schwiftX 时间: 2015-4-4 17:11
正在做这一章的日记,整理完了告诉你
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |