標籤:java 泛型
使用泛型,在某些情況下可以有效減少代碼量。
Pair泛型類可以根據傳入的參數類型進行相應的構造。
minmax是泛型方法,不同資料類型的數組,也可以得到他們的min max值,需要注意的是傳進去的T[]類類型必須是實現了Comparable方法的,否則無法調用compareTo()方法。
另外,泛型的類型必須是類類型,int, double, float這種是不行的,必須是Integer, Double, Float, String, StudentClass這種類類型的。
/** 泛型類 * Created by Sophie on 15/7/10. */public class Pair<T> { private T max; private T min; public Pair(T max, T min){ this.max = max; this.min = min; } /** * 泛型方法 * @return */ public T getMax(){ return this.max; } /** * 泛型方法 * @return */ public T getMin(){ return this.min; }}
public class Calc { /** * 泛型方法,且這種類型T是實現了Comparable介面的,否則無法使用.compareTo()方法 * @param nums * @param <T> * @return */ public static <T extends Comparable>Pair<T> minmax(T[] nums) { T max; T min; if (nums.length == 1) { max = nums[0]; min = nums[0]; } else { max = nums[0]; min = nums[0]; for (int i = 0; i < nums.length; i++) { if (nums[i].compareTo(max) > 0) max = nums[i]; if (nums[i].compareTo(min) < 0) min = nums[i]; } } return new Pair<T>(max,min); }}
import java.text.SimpleDateFormat;import java.util.GregorianCalendar;/** * Created by Sophie on 15/7/10. */public class Test { public static void main(String[] args){ /* Integer[] a = new Integer[]{1,2,3,4,5,6,7,8,9}; System.out.println("Max = "+Calc.minmax(a).getMax()+"; Min = "+Calc.minmax(a).getMin()); */ /* String[] a = new String[]{"abc","aab","aaa","01a"}; System.out.println("Max = "+Calc.minmax(a).getMax()+"; Min = "+Calc.minmax(a).getMin()); */ GregorianCalendar[] a = new GregorianCalendar[]{ new GregorianCalendar(1989,10,12,9,18,00), new GregorianCalendar(1989,9,30,11,23,18), new GregorianCalendar(1989,10,12,9,17,59) }; SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println("Max = "+df.format(Calc.minmax(a).getMax().getTime())+"\nMin = "+df.format(Calc.minmax(a).getMin().getTime())); }}
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
Java泛型類泛型方法