问题描述
- 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 更加智能的判断?
解决方案
这种设计没有用好面向对象的多态, 代码可读性差,作为公共接口也很难让人理解和调用; 使用方法重载会有更好的体验。
Number的子类还有BigDecimal, 显然BigDecimal和Integer的加法运算是不同的。
使用instanceof也只能简化if中的条件代码,没有本质区别。
解决方案二:
Java数组与泛型
Java 泛型数组
Java 泛型数组
时间: 2025-01-19 07:55:34