java -- 初识泛型

来源:互联网 发布:mac 终端 上传文件 编辑:程序博客网 时间:2024/06/05 04:16

泛型是JDK1.5版本新出的内容, 它在一定程度上保证了程序的安全性, 

泛型简单的说就是在 容器(比如集合)后面指定该容器存放的内容的类型。

ArrayList<String> al = new ArrayList<String>();al.add(4);
该代码是错误的, 因为ArrayList 后面的<String>指定了该集合存放的是String类型的数据, 但是 后面添加的是Integer类型。所以错误(参数不匹配)。


泛型类:

泛型类就是使用该类的对象可以变化。

比如 我定义了一个学生对象, 定义了一个Tool类用来操作学生对象; 然后我又定义了一个老师类, 定义一个Tool类来操作老师对象,  这样下去 我每次定义一个对象就要定义一个Tool类来操作该对象, 这样就很烦, 所以可以将Tool类定义为 泛型类, 这样无论是什么对象 都可以通过这个Tool类来操作。

import java.util.*;class  GenericClassDemo{public static void main(String[] args) {Tools<Worker> u = new Tools<Worker>();u.setObject(new Worker());Worker w = u.getObject();}}// 这种方式比定义参数为Object类更加常见, 更好class Tools<Q>{private Q q;public void setObject(Q q){this.q = q;}public Q getObject(){return q;}}class Worker{}class Student{}
泛型方法:

泛型类定义的泛型在整个类中有效,如果方法被使用,那么泛型类的对象明确要操作具体类型之后, 所有要操作的类型就已经固定了。
为了让不同的方法可以操作不同的类型, 而且类型不确定, 就可以定义泛型方法。

泛型方法的定义; 就是在该方法的返回值前面(修饰符后面)加上该方法的参数类型。

public <T> void show(T t)// 注意这个泛型<T>的有效区域只有这个方法之中, {System.out.println("show:"+t);}

其实泛型方法也就是都可以改变方法的 参数类型。

泛型方法的类型可以与泛型类的类型不一致。

注意一点: 静态方法的泛型不能与类的泛型一致。 因为静态比类先加载。

如果静态方法操作的引用数据类型不确定, 可以定义一个与类泛型不同的静态泛型方法。

原创粉丝点击