Intanto grazie per la risposta.
Quote:
Originariamente inviato da lovaz
Non dà warning perché List<Integer> è supertipo di ArrayList<Integer>, e non
ad esempio di ArrayList<String>, che avrebbe la stessa erasure...
In conclusione direi che se S è parametrico il cast è checked, altrimenti è unchecked.
|
La questione secondo me è diversa. Il testo dice: "
A cast from a type S to a parameterized type T .....". Quindi T è certamente parametrizzato mentre S
no, perché questo punto parla del fatto che un cast da un S non parametrizzato a un T parametrizzato è sempre unchecked
tranne (ed è qui che sbucano le eccezioni) uno dei tre casi elencati.
Tu invece hai fatto l'esempio di S e T entrambi parametrizzati, quindi è un'altra cosa, deduco io.
Quote:
Originariamente inviato da lovaz
Esempio per il secondo punto:
siano X = List<Integer> e Y = List<String> (tipi distinti, stessa erasure);
qualsiasi conversione tra un sottotipo di X e uno di Y fallisce.
Questo dice la frase in rosso.
|
Ci devo ragionare un pochino ... non sono sicuro al 100% che sia quel caso (ma potrei anche sbagliarmi).