Generics Java Tutorial

// Use a wildcard.
class GenericStats {
  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 iob = new GenericStats(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 dob = new GenericStats(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 fob = new GenericStats(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.