天天看点

两个不确定类型的数值相加的泛型方法

public class MyGenericTest3<T >{

    public <T extends Number> Double add(T t1,T t2){

        double sum=0;

        if (t1 instanceof Integer) {

            sum=sum+((Integer)t1).intValue();            

        }else if (t1 instanceof Long) {

            sum=sum+((Long)t1).longValue();            

        }else if (t1 instanceof Short) {

            sum=sum+((Short)t1).shortValue();            

        }

        else if (t1 instanceof Float) {

            sum=sum+((Float)t1).floatValue();

        }

        else if (t1 instanceof Double) {            

            sum=sum+((Double)t1).doubleValue();

        }

          if (t2 instanceof Integer) {

            sum=sum+((Integer)t2).intValue();            

        }else if (t2 instanceof Long) {

            sum=sum+((Long)t1).longValue();            

        }else if (t2 instanceof Short) {

            sum=sum+((Short)t2).shortValue();            

        }

        else if (t2 instanceof Float) {

            sum=sum+((Float)t2).floatValue();

        }

        else if (t2 instanceof Double) {            

            sum=sum+((Double)t2).doubleValue();

        }

          System.out.println("sum="+sum);   

          return sum;

    }

    public static void main(String[] args) {

        MyGenericTest3<Number> my=new MyGenericTest3<>();

        my.add(10,2.5f);

        System.out.println(my.add(10,2.5f));

    }

}