Day18总结
泛型类:
在写容器之前想要容器中要存什么?所以要先写好泛型
Eg:TreeSet<Person> ts=new TreeSet<Person>();
有了泛型后强制转换就没有用
Eg:public class Person parator<Person>{}
pare方法就不用强制转换了。
Public pare(Person p){}这里就不用在做强制转换了。
实现代码:
Public static void main(String[] args){
Tool t=new Tool();
(new Cat());
(new Dog());这时编译会出现没问题,但是运行时会出现错误,因为发生了类型转换异常,dog不能转换成Cat。
Cat c=(Cat)();
Tool<Cat> t=new Tool<Cat>();
(new Cat());此时就不用强转了
(new Dog()):此时编译就失败,把运行时的异常转到编译时候。
}
Class Cat{}
Class Dog{}
/*
Class Tool{
Private Object obj;
Public void setObject(Object obj){
=obj;
}
Public Object getObject(){
Return obj;
}
}
*/
改进后
Class Tool<T>{
Private T t;
Public void setObject(T t){
=t;
}
Public T getObject(){
Return t;
}
}
总结:这就是将泛型定义在类上,这个类称为泛型类,是一种替代Object类的一种技术,因为Object类有自动类型提升和转换,泛型已经替代它做了,编译时期更安全,省去了强转的麻烦。
什么时候使用泛型类?当类中要操作的引用数据类型不确定的时候,以前使用的是共性类型Object现在可以使用泛型来解决,比Object更为安全。
泛型方法:既然类中的方法操作类型不确定,其实可以将泛型定义在方法上。
实现代码:
Tool<String> t=new Tool2<String>>();
(new Integer(5));编译失败,因为类型不一致。
Tool2<Integer> t1=new Tool2<Integer>();这样便可以操作Integer类型的对象了。
();
Class Tool2<T>{
显示对象的打印结构,可是对象不确定,所以使用Object,而现在可以使用泛型解决。
<W>void show(W obj){
Sop(obj);
}
当静态方法的时候,如果方法是静态的是无法访问类上定义的泛型的,如果该方法还需要泛型,必须将泛型定义在方法上,
Static <Y> void staticMethod(Y t){}
泛型定义在方法上时只能放在返回值的前面和修饰符的后面
}
什么时候使用泛型方法?当方法操作的引用数据类型不确定的时候就使用方法。
day18(泛型、Map集合)总结 来自淘豆网m.daumloan.com转载请标明出处.