标签:
1.泛型程序设计
泛型程序设计意味着编写的代码可以被很多不同类型的对象所重用。
在java中增加泛型类之前,泛型程序设计是用继承Object实现的,这样的实现两个问题
第一:得到数据必须强制类型转换。
ArrayList al = new ArrayList(); String str = (String)al.get(0);
第二:没有错误检查,任何类的对象都能添加
al.add("abc"); al.add(new Integer(123)); //这样写都不会报错
针对这些问题,泛型提供了一个更好的解决方案:类型参数。类型参数使代码具有更好的可读性,并且不需要进行强制类型转换。
2.泛型类
泛型类就是具有一个或多个类型变量的类。用尖括号(<>)括起来,并放在类名后面。泛型类可以有多个类型变量。如:public class pair<T,U>;
package generic; /** * 泛型类 * @author 堕落梦醒 * * @param <T> */ public class Pair <T>{ private T first; private T second; public T getFirst() { return first; } public void setFirst(T first) { this.first = first; } public T getSecond() { return second; } public void setSecond(T second) { this.second = second; } public Pair(T first, T second) { this.first = first; this.second = second; } public Pair() { } }
3.泛型方法
既然有泛型类,肯定有泛型方法。泛型方法的类型变量放在修饰符的后面,返回类型的前面。如
pubic static <T> T get(){};
泛型方法可以定义在普通类中,也可以定义在泛型类中。
4.类型变量的限定
有时,类或方法需要多类型变量加以约束,比如下面的代码:
public static <T> T getMiddle(T[] a){ if(a==null || a.length==0) return null; T smallest = a[0]; for(int i=1;i<a.length;i++){ if(smallest.compareTo(a[i])>0) //error smallest = a[i]; } return smallest; }
这代码在编译的时候通不过,会报 T 没有CompareTo方法错误,那如何让T有这个方法呢?compareTo这个方法来源于Comparable接口,将T限制为实现了Comparable接口的类,可以通过类型变量T设置限定实现这一点:
public static <T extends Comparable> T min(T[] a)...
如果类型变量或通配符可以有多个限定。限定符用"&"分隔,而逗号用来分隔类型变量
public static <T extends Comparable & Serializable> T min(T[] a)...
出处:java核心技术 卷1
标签:
原文地址:http://www.cnblogs.com/duoluomengxing/p/4694245.html