之前实践中实现数据的加法,很繁琐,比如下面,每一种类型都要写一遍,能不能用泛型方法实现呢?
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); }
标签:java,args,Long,加法,init,arg,泛型,return,public From: https://www.cnblogs.com/wangbin2188/p/17445265.html