今天复习了一下泛型的使用方法,现在用非常简单的java代码解读Java泛型原理。
泛型类:Student.java
public class Student<T> {// 此处可以随便写标识符号,T是type的简称
private T ob;//定义泛型成员变量
public Student(){//无参构造方法
super();
}
public Student(T ob){
this.ob = ob;
}
public T getOb() {
return ob;
}
public void setOb(T ob) {
this.ob = ob;
}
public void showType(){
System.out.println("T的实际类型是:"+ob.getClass().getName());
}
}
测试类:Test.java
public class Test {
public static void main(String[] args) {
Integer a = 66;
//定义Student的一个Integer版本
Student<Integer> stuInteger = new Student<Integer>(a);
stuInteger.showType();
Integer i = stuInteger.getOb();///不同的对象调用相同的方法
System.out.println("value= "+i);
String www = "http://meirengo.taobao.com";
//定义Student的一个String版本
Student<String> stuString = new Student<String>(www);
stuString.showType();
String s = stuString.getOb();///不同的对象调用相同的方法
System.out.println("value= "+s);
Student stuLong = new Student(new Long(33));//不使用尖括号指定泛型类型
stuLong.showType();
Long ll = (Long) stuLong.getOb();//不指定泛型类型的需要强制转换(因为不指定泛型类型默认为Object类型)
System.out.println("value= "+ll);
}
}
泛型的优点:
1、类型安全:设置了泛型类型,就只能输入指定类型的数据。
2、消除强制类型转换:参照上面test实例,防止类型转换错误
不仅有泛型类,还有泛型方法,eg:
public <T> Object findList(String queryString, T t);
调用方式:return (List<XXX>)xxx.findList("findAll",yyy);