泛型使用
  泛型格式:通过<>来定义要操作的引用数据类型。
  在使用java提供的对象时,什么时候使用泛型呢?
  通常在集合框架中创建,只要见到<>要定义泛型。
  其实<>是用来接收类型的,当使用集合时,
  将集合中要存储的数据类型作为参数传递到<>中即可。
  示例

 

import java.util.*;
class TreeSetTest{
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("z");
ts.add("a");
ts.add("sdcvrt");
Iterator<String> it = ts.iterator();
while(it.hasNext()){
String s = it.next();
System.out.println(s);
}
}
}
//自定义比较器,实现Comparator接口并使用泛型
class LenComparator implements Comparator<String> {
public int compare(String s1,String s2){
/*
//升序
int num = new Integer(s1.length()).compareTo(new Integer(s2.length()));
if(num==0)
return s1.compareTo(s2);
return num;
*/
//降序
int num = new Integer(s2.length()).compareTo(new Integer(s1.length()));
if(num==0)
return s2.compareTo(s1);
return num;
}
}
/*
结果
sdcvrt
abcd
cba
cc
z
a
*/

  泛型类
  什么时候定义泛型类?
  当类中要操作的引用数据类型不确定的时候,
  早期定义Object来完成扩展。
  现在定义泛型来扩展。

 

class Worker{}
class Student{}
//泛型以前的做法
class Tool{
private Object obj;
public void setObject(Object obj){
this.obj = obj;
}
public Object getObject(){
return obj;
}
}
//泛型类
class Utils<QQ>{
private QQ q;
public void setObject(QQ q){
this.q = q;
}
public QQ getObject(){
return q;
}
}
class GenericDemo{
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 Worker());
Worker w = (Worker)t.getObject();
*/
}
}

  泛型方法
  为了让不同方法可以操作不同类型,而且类型还不确定,那么可以将
  泛型定义在方法上。

 

class Demo{
//类型定义在方法上
public <T> void show(T t){
System.out.println("show:"+t);
}
public <Q> void print(Q q){
System.out.println("print:"+q);
}
}
class  GenericDemo{
public static void main(String[] args){
Demo d = new Demo();
d.show(5);
d.show(new Integer(5));
d.show("haha");
d.print(8);
d.print(new Integer(5));
d.print("heihei");
}
}
/*
结果
show:5
show:5
show:haha
print:8
print:5
print:heihei
*/