Il polimorfismo, Autoboxing e conversioni implicite
-
04-10-2019 - |
Domanda
Vuoi prendere in considerazione autoboxing in Java di essere una forma di polimorfismo? Detto in altro modo, pensi che autoboxing estende le capacità polimorfiche di Java?
Che dire di conversioni implicite a Scala?
La mia opinione è che sono entrambi esempi di polimorfismo. Entrambe le caratteristiche consentono valori di tipi di dati da trattare in modo uniforme.
Il mio non è d'accordo collega con me. Chi ha ragione?
Soluzione
sottotipo polimorfismo, quasi universalmente chiamato solo il polimorfismo nel contesto orientato agli oggetti la programmazione, è la possibilità di una tipo A, di apparire come e utilizzare come un altro tipo, B.
Le conversioni implicite a Scala sono conversioni. Un oggetto viene convertito in un altro oggetto.
Autoboxing è la creazione di un oggetto (di nuovo, una conversione).
Quindi, non si tratta di polimorfismo.
Altri suggerimenti
Io personalmente considerare autoboxing come una specie di hack con risultati a volte inaspettati.
Boolean b = null;
boolean b2 = b; // oops
La parte difficile di autoboxing è che non è realmente un calco, che (solo) cambia il tipo, ma più di un valore di conversione.