黑马程序员技术交流社区
标题:
泛型限定初级运用
[打印本页]
作者:
itheima_llt
时间:
2015-4-16 22:08
标题:
泛型限定初级运用
本帖最后由 itheima_llt 于 2015-4-16 22:10 编辑
/*
6 泛型的高级应用
泛型的限定
本例主要演示:
1 泛型限定的由来
2 使用泛型限定的好处
3 泛型限定的基本类型
? extends E: 可以接收E类型或者E的子类型。上限。
? super E: 可以接收E类型或者E的父类型。下限
? 通配符
4 比较器使用泛型定义
*/
/*
泛型限定思路
1 为了提高代码的复用性
下面这个例子可以发现,
如果想要用迭代器取出元素,
就必须使用两个迭代器
代码的复用性不高。
--单独定义一个方法打印,使用通配符<?>,而不是使用<T>把泛型定义在方法上。
因为使用<T>的话,是可以传递对象的。T t = it.next();
而使用<?>则是不可能的!是不明确具体类型!
使用泛型是不可以使用类型特有的方法的,如it.next().length();
这就是泛型的弊端,和多态一样,“不能预先使用子类特有的方法”
*/
//一、泛型没有限定
/*
import java.util.*;
class GenericDemo6
{
public static void main(String[] args)
{
ArrayList<String> al = new ArrayList<String>();
al.add("abc1");
al.add("abc2");
al.add("abc3");
ArrayList<Integer> al1 = new ArrayList<Integer>();
al1.add(4);
al1.add(7);
al1.add(1);
printColl(al);
printColl1(al1);
}
public static void printColl(ArrayList<String> al)//ArrayList<String> al = new ArrayList<Integer>();这个是无法接受的,错误
{
Iterator<String> it = al.iterator();
while(it.hasNext())
{
System.out.println(it.next().toString());
}
}
public static void printColl1(ArrayList<Integer> al)
{
Iterator<Integer> it = al.iterator();
while(it.hasNext())
{
System.out.println(it.next().toString());
}
}
}
*/
//二、泛型使用了通配符
/*
import java.util.*;
class GenericDemo6
{
public static void main(String[] args)
{
ArrayList<String> al = new ArrayList<String>();
al.add("abc1");
al.add("abc2");
al.add("abc3");
ArrayList<Integer> al1 = new ArrayList<Integer>();
al1.add(4);
al1.add(7);
al1.add(1);
printColl(al);
printColl(al1);
}
public static void printColl(ArrayList<?> al)
{
Iterator<?> it = al.iterator();
while(it.hasNext())
{
System.out.println(it.next().toString());
}
}
}
*/
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2