[Java] Chiarimenti cast

GOPRO HERO4
Ciao a tutti, dovrei capire perchè sono stati fatti dei cast (segnati in rosso) nel seguente codice:
(mi scuso per le parentesi se non sono ben allineate ma non riesco ad inserirle come vorrei):

public void insert(Comparable key, Object value)
{
if(key == null) throw new IllegalArgumentException();
try { remove(key); } //Rimuove l'elemento se già presente
catch (DictionaryItemNotFoundException e)
{ } //Sovrascrive l'elemento se già presente
if(vSize == v.length) resize();

//Riordinamento per inserimento
int i = vSize;
while (i > 0 && (v [i-1].getName()).compareTo((String)key) > 0)
{
v = v[i-1];
i--;
}
v = new Pair((String)key, (long)value);
vSize++;
}

Questo è un metodo che permette di inserire in un ADT di tipo dizionario una chiave key ed un oggetto value.
Il problema sono i cast in rosso, perchè vengono fatti? io non li avrei mai messi.. forse mi sto perdendo qualche informazione.
(Naturalmente nel resto della classe si trova una classe interna Pair dove è presente il metodo getName ).

Grazie a tutti

Risposte
apatriarca
key e value hanno rispettivamente tipo Comparable e Object per cui è necessario convertirli in String e long per poterli usare come tali. Piuttosto non mi è chiaro il senso di usare Comparable e Object come tipi per gli argomenti considerando che l'implementazione dia per scontato che i tipi sono in realtà String e Long. Non mi sembra abbia insomma senso (a meno che il metodo non faccia parte dell'implementazione di qualche interfaccia ovviamente). Ma a questo punto sarebbe stato meglio usare dei Generics.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.