Penser en Java 2nde édition | - | Sommaire | Préface | Avant-propos | Chapitre : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | Annexe : A B C D | Tables des matières | - | Thinking in Java |
Les solutions aux exercices sélectionnés peuvent être trouvées dans le document électronique The Thinking in Java Annotated Solution Guide, disponible pour une faible somme sur www.BruceEckel.com.
[79]En C, qui généralement gère des données de petite taille, le passage d'arguments par défaut se fait par valeur. C++ a dû suivre cette norme, mais avec les objets, le passage par valeur n'est pas la façon de faire la plus efficace. De plus, coder une classer afin qu'elle supporte le passage par valeur en C++ est un gros casse-tête.
[80]Ce n'est pas l'orthographe correcte du mot clonable (N.d.T. : en français comme en anglais), mais c'est de cette manière qu'il est utilisé dans la bibliothèque Java ; j'ai donc décidé de l'utiliser ainsi ici aussi, dans l'espoir de réduire la confusion.
[81]On peut apparemment créer un simple contre-exemple de cette affirmation, comme ceci :
Toutefois, ceci ne marche que parce que main( ) est une méthode de Cloneit et donc a la permission d'appeler la méthode protected clone() de la classe de base. Si on l'appelle depuis une autre classe, la compilation générera des erreurs.
[82]L'avocat excepté, qui a été reclassifié en « aliment gras ».
[83]C++ permet au programmeur de surcharger les opérateurs comme il l'entend. Comme ceci se révèle souvent être un processus compliqué (voir le Chapitre 10 de Thinking in C++, 2nd edition, Prentice-Hall, 2000), les concepteurs de Java ont jugé une telle fonctionnalité « non souhaitable » qui ne devait pas donc pas être intégrée dans Java. Elle n'était apparemment pas si indésirable que cela, puisqu'eux-mêmes l'ont finalement utilisée, et ironiquement, la surcharge d'opérateurs devrait être bien plus facile à utiliser en Java qu'en C++. On peut le voir dans Python (voir www.python.org) qui dispose d'un ramasse-miettes et d'un mécanisme de surcharge d'opérateurs très simple à mettre en oeuvre.
[84]Doug Lea, qui m'a été d'une aide précieuse sur ce sujet, m'a suggéré ceci, me disant qu'il créait simplement une fonction duplicate() pour chaque classe.