天天看點

寫一個泛型方法,實作兩個數字相加

泛型,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)