java实现泛型加法

发布时间 2023-05-31 10:08:26作者: Mars.wang

之前实践中实现数据的加法,很繁琐,比如下面,每一种类型都要写一遍,能不能用泛型方法实现呢?

public Long getSum(Long... args) {
        long init = 0L;
        for (Long arg : args) {
            if (arg == null) {
                arg = 0L;
            }
            init += arg;
        }
        return init;
    }

    public Integer getSum(Integer... args) {
        int init = 0;
        for (Integer arg : args) {
            if (arg == null) {
                arg = 0;
            }
            init += arg;
        }
        return init;
    }

借鉴了网上大牛的代码,其实是可以实现的,用了所有数字类的基类Number,把所有类型都当做double类型处理,最后在转成相关类型

虽然牺牲了效率,但更优雅了

public <T extends Number> T getSum(T... args) {
        Double t = 0.0d;
        for (T arg : args) {
            t = t + arg.doubleValue();
        }
        return (T) t;
    }

    public <T extends Number> T add(T t1, T t2) {
        Double all = 0.0d;
        all = t1.doubleValue() + t2.doubleValue();
        return (T) (all);
    }