2010-05-21 4 views
2

Considérez-vous l'autoboxing dans Java comme une forme de polymorphisme? Autrement dit, pensez-vous que l'autoboxing étend les capacités polymorphes de Java?Polymorphisme, Autoboxing et conversions implicites

Qu'en est-il des conversions implicites dans Scala? Mon opinion est qu'elles sont les deux exemples de polymorphisme. Les deux caractéristiques permettent de traiter les valeurs de différents types de données de manière uniforme.

Mon collègue n'est pas d'accord avec moi. Qui a raison?

+0

Peut-être qu'ils sont polymorphes dans le sens réel du mot: multi (poly) -formed (morph), car ils peuvent apparaître sous différentes formes. Mais en termes de programmation ce n'est pas du polymorphisme ... Matthieu a raison :) – Simon

Répondre

7

De Wikipedia:

polymorphisme Sous-type, presque universellement appelé polymorphisme juste dans le contexte de la programmation orientée objet , est la capacité d'un type , A, apparaître au fur et à être utilisés comme un autre type, B.

Les conversions implicites dans Scala sont des conversions. Un objet est converti en un autre objet.

L'Autoboxing est la création d'un objet (encore une conversion).

Par conséquent, ce ne sont pas des polymorphismes.

+1

+1 L'interface ne doit pas changer et les contrats de l'interface remplis pour être polymorphes. –

1

Personnellement, je considère autoboxing comme une sorte de hack 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.

+1

Vous pouvez configurer presque tous les bons IDE Java pour mettre en évidence les occurrences de l'auto-unboxing (l'autooboxing est toujours sûr, votre exemple concerne la conversion inverse). –

Questions connexes