简单的Java泛型问题

nun*_*nos 0 java generics

我想有一个方法来计算Integer,Double和Float类型的LinkedList的平均值.

问题是sum += i;语句,因为java说没有为Object类型定义+运算符.

我可以进行强制转换,但是如果LinkedList的类型为Float,并且强制转换为Integer,那么我将无法计算正确的均值.

我该怎么办?谢谢.

 public double mean (LinkedList<?> l)
 {
  double sum = 0;
  int n = 0;
  for (Object i : l)
  {
   n++;
   sum += i;
  }

  return sum / n;
 }
Run Code Online (Sandbox Code Playgroud)

Pét*_*rök 11

您应该将列表限制为Numbers.这是常见的超类Integer,Float,Double和其他数字类型.它没有定义运算符,只有转换方法,例如double,但这对你来说已经足够了:

 public double mean (LinkedList<? extends Number> l)
 {
  double sum = 0;
  int n = 0;
  for (Number i : l)
  {
   n++;
   sum += i.doubleValue();
  }

  return sum / n;
 }
Run Code Online (Sandbox Code Playgroud)