Enveloppeurs en Java

Du type primitif en Objet et inversement

Ce site ne sera plus alimenté de contenu après août 2014. Tous les nouveaux articles seront redigés pour www.waitingforcode.com

Java distingue deux types des données : des instances des classes et des types primitifs. Ils sont interchangeables grâce à des enveloppeurs.

Les types primitifs ne sont pas des instances. Pour pouvoir les traiter en tant que telles, on peut les "envelopper" avec les wrappers. Ces enveloppeurs héritent tous de la classe Object et bénéficient de plusieurs méthodes utilitaires (comparaison, valeur maximale et minimale etc.). Voici comment se présente la transition entre les types primitifs et leurs enveloppeurs :

afficher le code

Sur l'écran on verra le résultat de conversion :

Int = 43 Short = 120 Long = 43 Float = 43.04 Double = 55.03 Byte = 73 Boolean = true String = String test Retreiving primitive types values from wrappers Int = 43 Short = 120 Long = 43 Float = 43.04 Double = 55.03 Byte = 73 Boolean = true String = String test

Les enveloppeurs peuvent être également appelés dynamiquement par la machine virtuelle Java. Cela trouve son utilité surtout dans l'ajout des données dans les collections. Regardons cela sur un bref exemple :

afficher le code

Et voici le résultat :

Map's content : {j=2, k=3, i=1}

On remarque que les types primitifs ont été automatiquement traduit en instances de la classe Integer. Pour savoir plus à ce sujet, consultez l'article consacré à l'autoboxing et autounboxing en Java.

télécharger les fichiers d'exemple
Bartosz KONIECZNY Informations sur le langage

Une question ? Une remarque ?

*

*

Un conseil Symfony2

Problème avec les valeurs par défaut pour un champ type checkbox ?

La gestion des formulaires sous Symfony2 correspond parfaitement au slogan de jQuery "write less, do more". En effet, il suffit de déterminer les validateurs une fois et après seulement les adapter en fonction du groupe du formulaire. Egalement la définition des champs est très intuitive. La récupération des données saisies, en cas d'une erreur de validation, est aussi automatique. Cependant, il se peut que vous renctonreriez un problème avec les champs du type checkbox. Supposons, qu'on veut construire un checkbox qui prendra pour valeur des chiffres (integers) correspondant aux identifiants aux apparements recherchés (1 pièce, 2 pièces, 3 pièces etc.) :

protected static $types = array(1 => '1 room', 2 => '2 rooms', 3 => '3 rooms');
Après une validation incorrecte, on retourne sur la page avec le formulaire pré-rempli. Pour être sûr que la liste des checkboxes va avoir les champs pré-cochés (par exemple 1 room et 3 rooms), il faut s'assurer que les types des valeurs sauvegardées sont égales à celles de la variable statique $types. Souvent il faut faire une boucle pour régler un éventuel problème avec les valeurs pré-cochés dans multiple checkboxes sous Symfony2 :
    foreach($values as $v => $val)
    {
      $vals[] = (int)$val;
    }