什么时候用泛型:当类中的操作的引用数据类型不确定的时候,以前用的Object来进行扩展的,1.5版本以后可以用泛型来表示。这样可以避免强转的麻烦,而且将运行问题转移到的编译时期。
泛型其实只在编译时期起作用,是给编译器使用的技术,到了运行时期,泛型就不存在了。因为泛型的擦除,也就是说,编辑器检查了泛型的类型正确后,在生成的类文件中是没有泛型的。
泛型是先定义后使用,一般情况下有三种定义:
一、把泛型定义在类上,比如:- package com.itheima;
- class Tool<Q> {
- private Q obj;
- public void setObject(Q obj) {
- this.obj = obj;
- }
- public Q getObject() {
- return obj;
- }
- }
复制代码 二、把泛型定义在方法上:- public <W> void method(W w) {
- System.out.println("method:" + w);
- }
复制代码 注意:如果类里面有两个或两个以上的方法都用的同一个类型的参数,必须要把泛型定义在类上。
三、把泛型定义在静态方法上:静态方法无法访问类上定义的泛型(因为对象传入的具体类型,没办作用在静态函数上),所以静态上要用泛型必须定义在静态方法上- public static <Q> void function(Q t) {
- System.out.println("function:" + t);
- }
复制代码 |