Je sais ce qu’est une classe wrapper, ils encapsulent les types primitifs (par exemple, int, double, etc.) en objects de leur classe respective.
Mais pourquoi avons-nous besoin des classes Wrapper? Pourquoi ne pas simplement aller avec les types primitifs où nous les avons?
Plusieurs raisons possibles:
Par exemple, lorsque les wrappers sont utilisés dans Collections, vous pouvez avoir un ArrayList
, mais pas un ArrayList
identique à HashMap
etc.
Java est un langage de programmation orienté object. Je pense que vous pourriez également demander – pourquoi avons-nous des primitifs et pourquoi tout n’est-il pas simplement un object?
Les concepteurs Java ont gardé les deux séparés pour garder les choses simples. Vous utilisez les wrappers lorsque vous avez besoin de types adaptés au monde orienté object – comme le polymorphism, les collections, etc. Vous utilisez les primitives lorsque vous avez besoin d’efficacité.
Les classes d’encapsuleur sont utilisées à la place des types primitifs lorsqu’un object est attendu.
Dans Collections, par exemple, une ArrayList peut contenir des instances de toute sous-classe de Object, mais comme les types primitifs ne sont pas des objects, ils ne peuvent pas être contenus dans ArrayList.
Les classes d’encapsuleur sont utilisées pour convertir n’importe quel type primitif en object. Les types de données primitifs ne sont pas des objects, ils n’appartiennent à aucune classe, ils sont définis dans le langage même. Tout en stockant dans des structures de données qui ne prennent en charge que des objects, il est nécessaire de convertir le type primitif en object en premier, nous allons donc à la classe wrapper.
Java utilise des types primitifs, tels que int, char, double pour contenir les types de données de base pris en charge par le langage.
Parfois, il est nécessaire de créer une représentation d’object de ces types primitifs.
Ce sont des classes de collection qui ne traitent que de tels objects. Il faut envelopper le type primitif dans une classe.
Pour satisfaire ce besoin, Java fournit des classes qui correspondent à chacun des types primitifs. Fondamentalement, ces classes encapsulent, ou enveloppent, les types primitifs dans une classe.
Ainsi, ils sont communément appelés wrapper de type. Les encapsuleurs de types sont des classes qui encapsulent un type primitif dans un object.
Les types d’encapsuleur sont Byte, Short, Integer, Long, Character, Boolean, Double, Float.
Java est un langage orienté object et tout ce que dit java est un object. Mais qu’en est-il des primitifs? Ils sont en quelque sorte omis dans le monde des objects, c’est-à-dire qu’ils ne peuvent pas participer aux activités de l’object, par exemple être renvoyés par une méthode en tant qu’object et ajoutés à une collection d’objects, etc. Pour résoudre ce problème, Java vous permet d’inclure les primitives dans la famille d’objects en utilisant ce qu’on appelle des classes d’encapsuleur.
Il y a trois raisons pour lesquelles vous pouvez utiliser un object Number plutôt qu’une primitive:
Source à partir de:
Les classes de nombres
Une des raisons pragmatiques est que les objects peuvent être nuls, que les primitives ne peuvent pas *. Si je ne peux pas garantir qu’une fonction puisse renvoyer un int, l’utilisation du wrapper est le seul moyen de gérer le trafic attendu. L’autoboxing s’occupe du rest.