Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的方法重载和泛型参数_Java_Generics_Overloading - Fatal编程技术网

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

Java中的方法重载和泛型参数,java,generics,overloading,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>

我有以下两种方法:

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();
}
公共静态双重计算意义(列表编号){
双和=0.0;
for(整数:数字)
总和+=数字;
返回sum/numbers.size();
}
公共静态双计算ANDOUBLE(列表编号){
双和=0.0;
用于(双倍数字:数字)
总和+=数字;
返回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();
  }

请注意,
列表
是番石榴的一部分。

+1个不错的答案。挑剔:这是一个有界的-有界的看起来像
列表
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));