Come ti ha detto pippo75 la classe Vector è un container di oggetti, significa che dentro ad un Vector ci puoi mettere ogni tipo di oggetto, ad esempio String, Date, Color, etc..., però per lui sono tutti "Object" (infatti ogni classe estende la classe base Object).
L'unica cosa è che quando devi estrarre un oggetto dal Vector (getElementAt), lui ti restituisce un oggetto generico (classe Object), non un oggetto della classe originale (String, Date, ...).
A questo punto devi essere tu a sapere qual'è la classe originale di questo oggetto e a farne il casting.

La riga User tmp = (User)utenti.elementAt(n); la potresti scrivere anche così:
Object obj = utenti.elementAt(n); // estrae un oggetto generico
Utente ut = (Utente)obj;

Il risultato è il medesimo, ottieni un oggetto Utente.

Capito?