quando hai una cosa del tipo (nomeclasse)oggetto_classe stai facendo un casting, ovvero stai forzando l'oggetto oggetto_classe ad essere di tipo nomeclasse.
Questo è sempre possibile farlo, ma naturalemnte se il casting non sarà possibile ottieni un classCastException.
Ad esempio, la classe Vector del package java.util gestisce un vettore di Oggetti, cioè accetta qualsiasi oggetto della classe Object o sua derivata (e quindi in pratica tutte, perchè tuttwe le classi esetndono in maniera implicita la classe object).
Quando fai su un oggetto di tipo Vector l'operazione v.getElementAt(i) (che restituisce l'elemento in posizione i) resituisce nu oggetto di tipo Object. Se non fai un casting esplicito l'oggetto restituito sarà di tipo Object. Ma se tu sai che hai un vettore di Integer, allora puoi fare
Integer element = (Integer) v.elementAt(i);
Naturalemente se l'oggetto in posizione i non è castabile ad Integer (cioè non è della classe Integer o sua superiore) avrai un classCaseException.