----------------------
泛型是JDK1.5版本以后出现的新特性,是用于解决安全问题的,是一个类型安全机制。
1.泛型的格式
通过<>来定义要操作的引用数据类型
2.泛型的好处:
(1).将运行时期出现的问题ClassCastException转移到编译时期,方便程序员解决问题,让运行时期问题减少;
(2).避免了强制转换的麻烦。
3.什么时候定义泛型
通常在集合框架中很常见,当使用集合时,将集合中要存储的数据类型作为参数传递到<>中即可。
只要见到<>就要定义泛型。
public class Demo {
public static void main(String[]args) {
//定义泛型
ArrayList<String>al=new ArrayList<String>();
al.add("");
Iteratoriterator=al.iterator();
while(iterator.hasNext())
{
System.out.println(iterator.next());
}
}
}
4.泛型类
什么时候定义泛型类,当类中要操作的引用数据类型不确定的时候,早期定义Object来完成扩展,现在定义泛型来扩展。
泛型类定义的泛型在整个类中有效,如果被方法使用,那么泛型类的对象明确要操作的具体类型后,所有要操作的类型就已经固定了;为了让不同方法可以操作不同类,而类型还不确定,那么可以将泛型定义在方法上。
//工具类
class Utils<QQ>
{
//QQ表示要操作的引用数据类型
private QQ qq;
public void setObject(QQ qq)
{
this.qq=qq;
}
public QQ getObject()
{
return qq;
}
}
注意:静态方法不可以访问类上定义的泛型;如果静态方法操作的数据类型不确定,可以将泛型定义在方法上。
class Demo<T>
{
//将泛型定义在方法上
public <A> void method_1()
{
}
//静态方法不能访问类上的泛型
public static <B> void method_2()
{
}
}
5.泛型定义在接口上
interface Inter<T>
{
void method(T t);
}
class Demo implementsInter<String>
{
public void method()
{
}
}
6.泛型的限定
? 表示通配符(也可以理解为占位符);
?extends E :可以接收E或者E的子类类型.称为上限
?suoer E:可以接收E或者E的父类类型。称为下限。
---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流!
----------------------