<06 集合框架(泛型概述)>
集合中只能添加对象,是不能添加基本数据类型的。但1.5版本之后可以。因为 基本数据类型有个自动装箱/拆箱动作。
<07 集合框架(泛型使用)>
泛型避免了强转
(泛型在比较器中的应用。代码变简洁,且安全性增强)
<08 集合框架(泛型类)>
在自己定义的类中使用泛型,来完成自己的程序设计。
由对方来指定要操作什么类型的对象
在编译期 报错,而不是运行时才报错。
泛型的出现,避免了强转。并且将错误 转移到了编译时期,而不是运行时期。
* 什么时候定义泛型类?
* 当类中要操作的引用数据类型不确定的时候,
* 早期定义Object来完成扩展,
* 现在定义泛型来完成扩展
* (注意只能是引用数据类型。基本类型 你重新定义不了)
<09 集合框架(泛型方法)>
泛型除了可以定义在类上,泛型还可以定义在方法上。
* 泛型类定义的泛型,在整个类中有效。如果被方法使用,
* 那么泛型类的对象明确要操作的具体类型后,所有要操作的类型就已经固定了。
*
* 为了让不同方法可以操作不同类型,而且类型还不确定,
* 那么可以将泛型定义在方法上。
*
*/
class Demo1{
public <T> void show(T t){
System.out.println("show: " + t);
}
public <Q> void print(Q q){
System.out.println("print: " + q);
}
}
class Demo<T>{
public void show(T t){
System.out.println("show: "+t);
}
public void print(T t){
System.out.println("print: " + t);
}
}
public class GenericDemo4 {
public static void main(String[] args){
Demo<String> d = new Demo<String>();
d.show("haha");
d.print("hehe");
Demo<Integer> i = new Demo<Integer>();
i.show(1);
Demo1 dd = new Demo1();
//类型定义在方法上,则往里面传什么类型,它就定义什么类型
dd.show("haha");
dd.show(1);
dd.print('a');
}
}
<10 集合框架(静态方法泛型)>
* 记住,特殊之处:
* 静态方法 不可以访问类上定义的泛型。
* 如果静态方法操作的引用数据类型不确定,可以将泛型定义在方法上。
泛型 定义在方法上,类型 放到 返回值类型的前面,修饰符的后面:
public static <W> void method(W t)
(静态的,先加载,后面的才用得上对象)
rem:如果是静态方法,泛型一定定义在接口上。
<11 集合框架(泛型接口)>
<12 集合框架(泛型限定)
用泛型好处:具有扩展性。不好处:不能使用类型的特有方法
<13 集合框架(泛型限定2)>