1、泛型类
ArrayList 类可以接受任何类型的参数,所以,取出来的类型肯定就是 Object 类型,这给我们使用带来了不便,因为取出来的都是 Object 对象,当我们想要恢复传入时候的数据类型,我们就必须进行强制类型转换:
1: public static void main(String[] args) {
2: ArrayList al = new ArrayList();
3: al.add("String");
4: String str = (String)al.get(0);
5: }
泛型的引入,限制的转入参数的数据类型,解决了上述强制类型转换的麻烦:
1: public static void main(String[] args) {
2: ArrayList al = new ArrayList ();
3: al.add("String");
4: String str = al.get(0);
5: }
值得注意的是,ArrayList 类是 JDK 类库提供的类,然而当我们自己需要编写像 ArrayList 类这样的支持泛型的类,我们该怎么办呢?我们可以参照下面的代码实现:
1: class Pair {
2:
3: private T a;
4: private T b;
5:
6: public Pair(T a, T b) {
7: super();
8: this.a = a;
9: this.b = b;
10: }
11:
12: public T getA() {
13: return a;
14: }
15:
16: public void setA(T a) {
17: this.a = a;
18: }
19:
20: public T getB() {
21: return b;
22: }
23:
24: public void setB(T b) {
25: this.b = b;
26: }
27:
28: }
2、泛型方法
泛型方法可以定义在普通类中(当然也可以在泛型类中),示例如下:
1: class Tools{
2:
3: public static T getMiddle(T[] a){
4: return a[a.length/2];
5: }
6:
7: }