/** * rappresenta uno studente. Classe didattica per illustrare l'ereditarieta' * e l'ordinamento con criteri multipli. * * @author F. Bombi */ public class StudenteEsteso extends Studente { public static final int NOME = 0; public static final int MATRICOLA = 1; private static int ordinamento = MATRICOLA; public StudenteEsteso(String n, int m) { super(n, m); } public int compareTo(Object rhs) { StudenteEsteso s = (StudenteEsteso)rhs; if (ordinamento == MATRICOLA) return matricola() - s.matricola(); return nome().compareTo(s.nome()); } /** imposta il tipo di ordinamento @param valore il tipo di ordinamento: per NOME o per MATRICOLA @throws java.lang.IllegalArgumentException */ public static void ordinaPer(int valore) { if (valore != NOME && valore != MATRICOLA) throw new IllegalArgumentException("Non so ordinare per : " + valore); ordinamento = valore; } }