泛型:JDK1.5版本号以后出现新特性。
当类中要操作的引用数据类型不确定的时候,早期定义Object来完毕扩展。如今定义泛型来完毕扩展。
通常在集合框架中非经常见,仅仅要见到<>就要定义泛型。事实上<> 就是用来接收类型的。
泛型使用:
定义泛型类
用于解决安全问题,是一个类型安全机制。
优点:
1.将执行时期出现故障ClassCastException转移到了编译时期,方便程序猿解决这个问题。让执行时问题降低,安全。
2,避免了强制转换麻烦。
泛型格式:通过<>来定义要操作的引用数据类型。
当类中要操作的引用数据类型不确定的时候,早期定义Object来完毕扩展。如今定义泛型来完毕扩展。
通常在集合框架中非经常见,仅仅要见到<>就要定义泛型。事实上<> 就是用来接收类型的。
当使用集合时,将集合中要存储的数据类型作为參数传递到<>中就可以。
比方说:
import java.util.*;
class GenericDemo
{
public static void main(String[] args)
{
ArrayList<String> al = new ArrayList<String>();
al.add("abc01");
al.add("abc0991");
al.add("abc014");
//al.add(4);//al.add(new Integer(4));
Iterator<String> it = al.iterator();
while(it.hasNext())
{
String s = it.next();
System.out.println(s+":"+s.length());
}
}
}
泛型使用:
import java.util.*;
class GenericDemo2
{
public static void main(String[] args)
{
TreeSet<String> ts = new TreeSet<String>(new LenComparator());
ts.add("abcd");
ts.add("cc");
ts.add("cba");
ts.add("aaa");
ts.add("z");
ts.add("hahaha");
Iterator<String> it = ts.iterator();
while(it.hasNext())
{
String s = it.next();
System.out.println(s);
}
}
}
class LenComparator implements Comparator<String>
{
public int compare(String o1,String o2)
{
int num = new Integer(o2.length()).compareTo(new Integer(o1.length()));
if(num==0)
return o2.compareTo(o1);
return num;
}
}定义泛型类
class Worker{
}
class Student{
}
//泛型前做法。
class Tool
{
private Object obj;
public void setObject(Object obj)
{
this.obj = obj;
}
public Object getObject()
{
return obj;
}
}
//泛型类。
/*
什么时候定义泛型类?
当类中要操作的引用数据类型不确定的时候,
早期定义Object来完毕扩展。
如今定义泛型来完毕扩展。
*/
class Utils<QQ>
{
private QQ q;
public void setObject(QQ q)
{
this.q = q;
}
public QQ getObject()
{
return q;
}
}
class GenericDemo3
{
public static void main(String[] args)
{
Utils<Worker> u = new Utils<Worker>();
u.setObject(new Worker());
Worker w = u.getObject();;
/*
Tool t = new Tool();
t.setObject(new Student());
Worker w = (Worker)t.getObject();
*/
}
}