Mega Code Archive

 
Categories / Java Tutorial / Generics
 

Using Wildcard Arguments

// 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.