Polymorphisme, Autoboxing, et les conversions implicites
-
04-10-2019 - |
Question
envisageriez-vous autoboxing en Java comme une forme de polymorphisme? Autrement dit, pensez-vous autoboxing étend les capacités polymorphes de Java?
Qu'en est-il des conversions implicites dans Scala?
Mon opinion est que ce sont les deux exemples de polymorphisme. Ces deux caractéristiques permettent des valeurs de différents types de données à traiter d'une manière uniforme.
Mon collègue est en désaccord avec moi. Qui a raison?
La solution
De Wikipedia :
polymorphisme Sous-type, presque universellement appelé juste polymorphisme dans le contexte de orienté objet la programmation, est la capacité d'un type A, d'apparaître au fur et à utiliser comme un autre type, B.
Les conversions implicites dans Scala sont des conversions. Un objet est converti en un autre objet.
Autoboxing est la création d'un objet (encore une fois, une conversion).
Par conséquent, ce ne sont pas polymorphisme.
Autres conseils
Je considère personnellement autoboxing comme une sorte de bidouille avec des résultats parfois inattendus.
Boolean b = null;
boolean b2 = b; // oops
La partie la plus délicate de autoboxing est qu'il est pas vraiment un casting qui (uniquement) change le type, mais plus d'une conversion de valeur.