gpt4 book ai didi

java - Java 中泛型的方法重载和参数

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:51:12 24 4
gpt4 key购买 nike

我有以下两种方法:

public static double calculateMeanInt(List<Integer> numbers) {
double sum = 0.0;
for(Integer number : numbers)
sum += number;
return sum/numbers.size();
}

public static double calculateMeanDouble(List<Double> numbers) {
double sum = 0.0;
for(Double number : numbers)
sum += number;
return sum/numbers.size();
}

您是否有一个优雅的解决方案(除了使用类型转换和对象)可以避免上面的重复代码并使用单个方法名称?

最佳答案

Java 中的每个数字类型都从 Number 扩展而来,因此您可以使用有界类型参数(感谢 Paul)在一种方法中对所有数字类型进行平均:

  public static <N extends Number> double calculateMean(List<N> numbers) {
double sum = 0.0;
for (N number : numbers)
sum += number.doubleValue();
return sum / numbers.size();
}

例如像那样:

double intMean = calculateMean(Lists.newArrayList(1,2,3,4,5));
double doubleMean = calculateMean(Lists.newArrayList(1d,2d,3d,4d,5d));
double longMean = calculateMean(Lists.newArrayList(1l,2l,3l,4l,5l));

请注意,Lists 是 Guava 的一部分。

关于java - Java 中泛型的方法重载和参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12258239/

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