<CoreJava> 12.2简单泛型类的定义

一个泛型类就是有一个或多个类型变量的类。

一般的类和方法,只能使用具体的类型(基本类型或者自定义类型)。如果要编译应用于多种类型的代码就要引入泛型了。

例12-1使用Pair类。静态方法minmax遍历数组同时计算出最小值和最大值。用一个Pair返回两个结果

  1. package core.pair_12_1;  
  2.   
  3.   
  4. public class PairTest1 {  
  5.   
  6.     public static void main(String[] args) {  
  7.         String[] words = {"Mary""had""a""little""lamb"};  
  8.         Pair<String> mm = ArrayAlg.minmax(words);  
  9.         System.out.println("min = " + mm.getFirst());  
  10.         System.out.println("max = " + mm.getSecond());  
  11.     }  
  12. }  
  13.   
  14. class ArrayAlg {  
  15.   
  16.     public static Pair<String> minmax(String[] a) {  
  17.         // TODO Auto-generated method stub  
  18.         if (a == null || a.length == 0)  
  19.             return null;  
  20.           
  21.         String min = a[0];  
  22.         String max = a[0];  
  23.           
  24.         for (int i = 1; i < a.length; i++) {  
  25.             if (min.compareTo(a[i]) > 0)  
  26.                 min = a[i];  
  27.             if (max.compareTo(a[i]) < 0)  
  28.                 max = a[i];  
  29.         }  
  30.         return new Pair<String>(min, max);  
  31.     }  
  32.       
  33. }  
  34.   
  35. class Pair<T> {  
  36.     private T first;  
  37.     private T second;  
  38.   
  39.     public Pair() {  
  40.         first = null;  
  41.         second = null;  
  42.     }  
  43.     public Pair(T first, T second) {  
  44.         this.first = first;  
  45.         this.second = second;  
  46.     }  
  47.       
  48.     public T getFirst() {  
  49.         return first;  
  50.     }  
  51.     public T getSecond() {  
  52.         return second;  
  53.     }  
  54.       
  55.     public void setFirst(T newValue) {  
  56.         first = newValue;  
  57.     }  
  58.     public void setSecond(T newValue) {  
  59.         second = newValue;  
  60.     }  
  61. }  


12.3泛型方法

泛型方法可以定义在泛型类中也可以定义在普通类中:

public static <T> getMiddle(T[] a) {

return a[a.length / 2];

}

注意,类型变量<T>放在修饰符(这里是public static)后面,返回类型的前面。

posted @ 2013-02-28 19:09  vincent_hv  阅读(245)  评论(0编辑  收藏  举报