泛型是一种特殊的类型,它把指定类型的工作推迟到客户端代码声明并实例化类或方法的使用进行。也被称为参数化类型,可以把类型当做参数一样传递过来,在传递过来 之前我不明确,但是在使用的时候就就明确了。
泛型的好处:
1.提高了程序的安全性
2.将运行期遇到的问题转移到了编译期
3.省去了类型强转的麻烦
泛型的常见应用:
1.泛型类
2.泛型方法
3.泛型接口
早期就是使用Object来表示任意的类型, 但是在向下转型的时候有时候会出现问题,很显然, 这种设计存在风险, 于是, java就给我们提供了泛型来保证安全性.
泛型的应用之----泛型类:
自定义泛型类, 把泛型定义在类上:
格式:
public class 类名<泛型类型1, 泛型类型2,..>
注意: 泛型类型必须是引用数据类型
public class ObajectTools<T> {
// T表示任意类型
private T t;
getT();
setT();
}
---------------------------------------
ObjectTools<String> obj = new ObjectTools<String>();
obj.setT("张三");
String s = (String)obj.getT();
syso(s);
obj.setT(20); // 报错 :泛型是String类型
Integer i = (Integer)obj.getT();
syso(i);
-----------------------------------------------------------------
泛型的应用之---泛型方法
泛型方法:就是把泛型定义在方法上
格式:
修饰符 <泛型> 返回值类型 方法名(泛型类型 变量名) {}
class Phone{
public <T> void show(T t) {
syso(t);
}
}
Phone p = new Phone();
p.show("张三");
p.show(20);
p.show(true);
-----------------------------------------------------------------
泛型的应用之---泛型接口
泛型方法:就是把泛型定义在接口上
格式:
public interface 接口名<泛型类型> {
public abstract void show(T t);
}
1.在创建子类的时候已经可以知道是什么类型
2.在创建子类的时候还不知道是什么类型, 这时候需要将子类也声明称泛型类
--------------------------------------------
interface Inter <T> {
public abstract void show(T t);
}
public class InterImpl implements Inter<String> {
public void show(String s)
syso(s);
}
public class InterImpl<T> implements Inter<T> {
public void show(T t)
syso(t);
}
Inter<String> i = new InterImpl<String>();
|
|