gpt4 book ai didi

Java 1.7 : Sum of Iterable

转载 作者:搜寻专家 更新时间:2023-11-01 03:23:49 26 4
gpt4 key购买 nike

我需要创建一个辅助方法,它允许创建任何 Iterable ,因为我们有很多 vector ,需要一个快速的方法来确定和,所以我创建了以下方法:

 static Integer sum(Iterable<Integer> it) {
Integer result = 0;
for(T next : it) {
result += next;
}
return result;
}

此方法仅适用于整数,但我们也有 double 和长整数。因为你不能有两个具有相同签名的方法(我们的编译器认为 Integer sum(Iterable ) 具有与 Double sum(Iterable ) 相同的签名。)我尝试用泛型编写一个方法。

private static <T extends Number> T sum(Iterable<? extends T> it) {
T result;
for(T next : it) {
result += next;
}
return result;
}

但是这个方法不会编译(原因:运算符 += 对于 Object, Object 是未定义的)。我可以在这里做什么?我知道在 C++ 中可以重载运算符,但在 Java 中不行。但是每个扩展 Number 的类都会重载 += 运算符。我可以在这里做什么?

提前谢谢你。

最佳答案

如果数字不能是 BigIntegerBigDecimal,您可以尝试将它们转换为 double 并按如下方式求和:

double result = 0;
for (T number : it) {
result += number.doubleValue();
}

关于Java 1.7 : Sum of Iterable<T extends Number>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20950060/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com