Use a wildcard. : Constraints « Generics « Java






Use a wildcard.

   
class Stats<T extends Number> {
  T[] nums;

  Stats(T[] o) {
    nums = o;
  }

  double average() {
    double sum = 0.0;

    for (int i = 0; i < nums.length; i++)
      sum += nums[i].doubleValue();

    return sum / nums.length;
  }

  boolean sameAvg(Stats<?> ob) {
    if (average() == ob.average())
      return true;

    return false;
  }
}

class WildcardDemo {
  public static void main(String args[]) {
    Integer inums[] = { 1, 2, 3, 4, 5 };
    Stats<Integer> iob = new Stats<Integer>(inums);
    double v = iob.average();
    System.out.println("iob average is " + v);

    Double dnums[] = { 1.1, 2.2, 3.3, 4.4, 5.5 };
    Stats<Double> dob = new Stats<Double>(dnums);
    double w = dob.average();
    System.out.println("dob average is " + w);

    Float fnums[] = { 1.0F, 2.0F, 3.0F, 4.0F, 5.0F };
    Stats<Float> fob = new Stats<Float>(fnums);
    double x = fob.average();
    System.out.println("fob average is " + x);

    // See which arrays have same average.
    System.out.print("Averages of iob and dob ");
    if (iob.sameAvg(dob))
      System.out.println("are the same.");
    else
      System.out.println("differ.");

    System.out.print("Averages of iob and fob ");
    if (iob.sameAvg(fob))
      System.out.println("are the same.");
    else
      System.out.println("differ.");
  }
}

   
    
  








Related examples in the same category

1.Java generic: Use a wildcard.Java generic: Use a wildcard.
2.Java generic: Bounded Wildcard argumentsJava generic: Bounded Wildcard arguments
3.Bounded Wildcard arguments.
4.Generic castGeneric cast
5.Generic structure with constraints
6.Return an implementation of a Comparable