Using Wildcard Arguments : Bounded Types « Generics « Java Tutorial






// Use a wildcard.
class GenericStats<T extends Number> {
  T[] nums;
    
  GenericStats(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(GenericStats<?> ob) {
    if(average() == ob.average()) 
      return true;

    return false;
  }
}  
  
public class MainClass {
  public static void main(String args[]) {
    Integer inums[] = { 1, 2, 3, 4, 5 }; 
    GenericStats<Integer> iob = new GenericStats<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 };
    GenericStats<Double> dob = new GenericStats<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 }; 
    GenericStats<Float> fob = new GenericStats<Float>(fnums);
    double x = fob.average(); 
    System.out.println("fob average is " + x);
 
    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.");
    }
  }
}
iob average is 3.0
dob average is 3.3
fob average is 3.0
Averages of iob and dob differ.
Averages of iob and fob are the same.








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