mos*_*tar 6 java generics overloading
我有以下两种方法:
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();
}
Run Code Online (Sandbox Code Playgroud)
你有一个优雅的解决方案(除了使用类型转换和对象),将避免上面的重复代码,并将使用单个方法名称?
Tho*_*lut 13
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();
}
Run Code Online (Sandbox Code Playgroud)
那样的eG:
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));
Run Code Online (Sandbox Code Playgroud)
请注意,这Lists是番石榴的一部分.
| 归档时间: |
|
| 查看次数: |
172 次 |
| 最近记录: |