Bounded Types : Bounded Types « Generics « Java Tutorial






The type argument for T must be either Number, or a class derived from Number.

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;
  } 
} 
 
public class MainClass { 
  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);
  } 
}
iob average is 3.0
dob average is 3.3








12.5.Bounded Types
12.5.1.Bounded Types
12.5.2.Using Wildcard Arguments
12.5.3.Bounded Wildcards
12.5.4.Upper/lower bound for a wildcard