itelyder 2015-10-12 08:31 采纳率: 75%
浏览 2527
已采纳

JAVA_数组_泛型:我写了一个数组结合泛型的通用求和方法,求帮忙优化,写的太烂了

=====《求求大神帮我优化下啊,我写的太烂了》====
public static void main(String[] args) {
Number[] num1 = {2, 3, 3, 4, 5}; //Integer
Number[] num2 = {1.1, 2.0, 3.0, 4.0, 5.0}; //Double
System.out.println(num1[0].getClass().getTypeName());
System.out.println(new ArraysTest().ArraysSum(num2));

}

public static <T extends Number> T ArraysSum(T[] num) {
    System.out.println(num.getClass().getTypeName());
    Double sum = 0.0;
    for (int i = 0; i < num.length; i++) {
        sum += num[i].doubleValue();

    }
    if (num[0].getClass().getTypeName().equals("java.lang.Integer")){
        Integer result = (int)((double)sum);
        return (T)result;
    }
    if (num[0].getClass().getTypeName().equals("java.lang.Double")){
        Double result = sum.doubleValue();
        return (T)result;
    }
    return (T)sum;
}

如何结合instanceof 更加智能的判断?

  • 写回答

1条回答 默认 最新

  • lic0112 2015-10-12 10:00
    关注

    这种设计没有用好面向对象的多态, 代码可读性差,作为公共接口也很难让人理解和调用; 使用方法重载会有更好的体验。
    Number的子类还有BigDecimal, 显然BigDecimal和Integer的加法运算是不同的。
    使用instanceof也只能简化if中的条件代码,没有本质区别。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制