Originariamente inviato da LeleFT
Direi che le slide non sono per nulla chiare.
La prima istruzione, quella di creazione dell'array, non ha alcun problema. Creo un array che potrà contenere 10 oggetti Apple e lo vedo come un array che contiene 10 oggetti Fruit. Apple è un Fruit: tutto ok.
La seconda, assegna al primo elemento un oggetto Apple. Nessun problema
La terza genera un ArrayStoreException perchè non posso assegnare ad un elemento di un array di Fruit un oggetto di un tipo che non sia un Fruit.
La quarta genera un ArrayStoreException perchè, sebbene io veda un array di Fruit, quello che ho realmente è un array di Apple. Siccome "Fruit" può essere un oggetto qualunque (anche un Orange), non posso assegnarlo ad una posizione di un array fatto per contenere solo Apple.
La quinta, come la precedente, genera un ArrayStoreException perchè sto proprio commettendo l'errore descritto sopra: assegno un Orange ad un array atto a contenere Apple.
Nessuna differenza: la documentazione del metodo isInstance() della classe Class dice che tale metodo è esattamente equivalente all'operatore instanceof.
PS: instanceof è un operatore, non un metodo.
Ciao.