泛型,Generic Type ,Generics
定義一個泛型,最重要的是什麼?是類型呀,就是<T>這個标記。
寫一個泛型方法,實作兩個數字相加
static <T> T add(T a,T b) throws Exception {
if(a instanceof Integer){
return (T)Integer.valueOf(((Integer) a).intValue()+((Integer)b).intValue());
}else if(a instanceof BigDecimal){
return (T) ((BigDecimal) a).add((BigDecimal) b);
}else if(a instanceof Long){
return (T)Long.valueOf (((Long) a).longValue()+((Long) b).longValue());
}else {
throw new Exception("未實作該類型的加法"+a.getClass().getName());
}
}
測試:
public static void main(String[] args) throws Exception {
System.out.println(add(1,2));
System.out.println(add(1L,2L));
System.out.println(add(BigDecimal.TEN,BigDecimal.ONE));
System.out.println(add(1f,2f));
}
輸出:
3
3
11
Exception in thread "main" java.lang.Exception: 未實作該類型的加法java.lang.Float
at com.clz.TestMain.add(TestMain.java:63)
at com.clz.TestMain.main(TestMain.java:72)