// Employee01.java -- generic sorting using subclassing

abstract class Sortable01 {
   public abstract boolean compare (Sortable01 b);
   public static void sort (Sortable01 [] a) {
      int i=0,j=0;
      // ...
      a[i].compare (a[j]);
      // ...
   }
}

class Employee01 extends Sortable01 {
   public int salary;
   public boolean compare (Sortable01 b) {
      Employee01 e = (Employee01) b;
      return (salary < e.salary);
   }
   public static void main (String [] args) {
      Employee01 [] a = {};
      Sortable01.sort (a);
   }
}