Sobes.tech
Junior

Qu'est-ce que les classes enveloppe (Wrapper classes) en Java ?

sobes.tech IA

Réponse de l'IA

Les classes wrapper en Java sont des classes qui offrent une représentation orientée objet des types de données primitifs. Elles permettent d'utiliser des valeurs primitives dans des contextes où des objets sont requis, par exemple dans des collections ou lors de la gestion de la concurrence.

Principales classes wrapper :

  • Byte
  • Short
  • Integer
  • Long
  • Float
  • Double
  • Boolean
  • Character

Exemples d'utilisation :

Utilisation de types primitifs :

// Type primitif
int x = 10;

Utilisation de la classe wrapper :

// Classe wrapper
Integer y = new Integer(20); // Méthode obsolète de création
Integer z = 30; // Autoboxing (conversion automatique du primitif en objet)

Conversion entre primitifs et objets wrapper :

  • Autoboxing : Conversion automatique du primitif en objet wrapper.
    // Autoboxing
    int primitiveInt = 100;
    Integer wrapperInt = primitiveInt;
    
  • Unboxing : Conversion automatique de l'objet wrapper en primitif.
    // Unboxing
    Integer wrapperInteger = new Integer(200);
    int primitiveInteger = wrapperInteger;
    

Avantages des classes wrapper :

  • Travailler avec des collections : Les collections (List, Set, Map) ne stockent que des objets.
  • Travailler avec null : Les objets wrapper peuvent avoir la valeur null, contrairement aux primitifs.
  • Fournissent des méthodes utiles : Les classes wrapper ont des méthodes pour convertir des chaînes, comparer des valeurs, etc. Par exemple, Integer.parseInt(String s).
  • Travailler avec des génériques : Les génériques ne fonctionnent qu'avec des objets.

Inconvénients des classes wrapper :

  • Consommation de mémoire : Les objets wrapper occupent plus de mémoire que les primitifs.
  • Réduction des performances : La conversion automatique (autoboxing et unboxing) peut légèrement réduire la performance.

Exemple d'utilisation dans une collection :

import java.util.ArrayList;
import java.util.List;

public class WrapperExample {
    public static void main(String[] args) {
        List<Integer> numbers = new ArrayList<>();
        numbers.add(10); // Autoboxing
        numbers.add(new Integer(20)); // Création explicite de l'objet

        int firstNum = numbers.get(0); // Unboxing
        System.out.println(firstNum);
    }
}