java泛型
泛型:JDK1.5版本以后出现新特性,用于解决安全问题,是一个安全机制.
升级3部 高效 简化书写 安全
好处:
1将运行时期出现问题ClassCastException类型转换异常,转移到了编译时期.方便程序员解决问题,让运行事情问题减少,安全.
2.避免了强制转换麻烦.
在使用java提供的对象时,什么时候写泛型呢?
通常在集合框架中很常见,只要见到<>就要定义泛型.
其实<>就是用来接收类型的.
什么时候定义泛型类?
当类中要操作的引用数据类型不确定的时候.
为了让不同方法可以操作不同类型,而且类型还部确定
那么可以将泛型在方法上
特殊之处:
静态方法不可以访问类上定义的泛型.
如果静态方法操作的应用数据类型不确定.可以将泛型定义在方法上.
泛型的位置也有将就
Public static <QQ> getfanxing(){} 位置错了也会报错.
可以既有泛型类,也有泛型方法
泛型定义在方法上事例
package pack; import java.util.ArrayList; import java.util.Collection; public class Demo{ public static void main(String[] args) { } //泛型定义在方法上,返回值和参数都是泛型 public static <T> T show(ArrayList<T> al){ return null; } //泛型定义在方法上, public static <T> void show(Collection<T> al){ } }
泛型定义在类上事例
package pack; import java.util.ArrayList; import java.util.Collection; public class Demo<T>{ T a; } class Gen<T>{ T a; public Gen(T obj){ } public void Get(T t){ } public T getObj(){ return null; } }
泛型的限定:
? 通配符,也可理解为占位符
泛型的限定:
? extends E:可以接收E类型或者E的子类型.上限. 既能接收E 也能接收E的子类型
?super E:可以接收E类型或者E的父类型.下限.
? 通配符,也可理解为占位符 泛型的限定:
public static void printToll(ArrayList<?> al) //泛型通配符.? { Iterator<?> it = al.iterator(); while(it.hasNext()) { System.out.println(it.next()); } }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。