Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Java

Maîtriser les Génériques Java : Simplifier le tri et renforcer la sécurité de type

Il serait pratique d'écrire une seule méthode de tri fonctionnant pour un tableau d'Integer, de String, ou de tout type supportant l'ordre.

Les méthodes génériques et classes génériques permettent de déclarer, avec une seule déclaration, un ensemble de méthodes apparentées ou de types apparentés.

Les génériques offrent aussi la sécurité de type à la compilation : détection des types invalides avant l'exécution.

Méthodes génériques

Une seule déclaration pour des appels avec différents types d'arguments. Le compilateur gère chaque appel selon les types réels.

Règles de déclaration

Exemple : affichage de tableaux de types différents


public class TestMethodeGenerique {
    // méthode générique printArray
    public static <E> void printArray(E[] inputArray) {
        for (E element : inputArray) {
            System.out.printf("%s ", element);
        }
        System.out.println();
    }
    
    public static void main(String args[]) {
        Integer[] intArray = { 1, 2, 3, 4, 5 };
        Double[] doubleArray = { 1.1, 2.2, 3.3, 4.4 };
        Character[] charArray = { 'H', 'E', 'L', 'L', 'O' };
        
        System.out.println("Tableau d'entiers :");
        printArray(intArray);
        
        System.out.println("\nTableau de doubles :");
        printArray(doubleArray);
        
        System.out.println("\nTableau de caractères :");
        printArray(charArray);
    }
}

Résultat :


Tableau d'entiers :
1 2 3 4 5 

Tableau de doubles :
1.1 2.2 3.3 4.4 

Tableau de caractères :
H E L L O

Paramètres de type bornés (Bounded Type Parameters)

Pour restreindre les types acceptables. Ex: méthode sur nombres → seulement Number ou sous-classes.

Syntaxe : <T extends BorneSupérieure>. extends signifie "étend" (classes) ou "implémente" (interfaces).

Exemple : maximum de trois objets Comparable


public class TestMaximum {
    // retourne le plus grand de trois objets Comparable
    public static <T extends Comparable<T>> T maximum(T x, T y, T z) {
        T max = x;
        if (y.compareTo(max) > 0) max = y;
        if (z.compareTo(max) > 0) max = z;
        return max;
    }
    
    public static void main(String args[]) {
        System.out.printf("Max de %d, %d, %d est %d\n\n", 3, 4, 5, maximum(3, 4, 5));
        System.out.printf("Max de %.1f, %.1f, %.1f est %.1f\n\n", 6.6, 8.8, 7.7, maximum(6.6, 8.8, 7.7));
        System.out.printf("Max de %s, %s, %s est %s\n", "poire", "pomme", "orange", maximum("poire", "pomme", "orange"));
    }
}

Résultat :


Max de 3, 4, 5 est 5
Max de 6.6, 8.8, 7.7 est 8.8
Max de poire, pomme, orange est poire

Classes génériques

Déclaration comme classe non-générique, mais nom suivi d'une section de paramètres de type.

Un ou plusieurs paramètres séparés par virgules. Nommées classes paramétrées ou types paramétrés.

Exemple : classe Box générique


public class Box<T> {
    private T t;
    
    public void add(T t) { this.t = t; }
    public T get() { return t; }
    
    public static void main(String[] args) {
        Box<Integer> integerBox = new Box<Integer>();
        Box<String> stringBox = new Box<String>();
        
        integerBox.add(new Integer(10));
        stringBox.add(new String("Hello World"));
        
        System.out.printf("Valeur Integer : %d\n\n", integerBox.get());
        System.out.printf("Valeur String : %s\n", stringBox.get());
    }
}

Résultat :


Valeur Integer : 10
Valeur String : Hello World

Avantages des génériques

Note : Les génériques utilisent l'effacement de type (type erasure) — les informations de type générique ne sont pas disponibles à l'exécution.

Java

  1. Types de données primitifs en Java : Guide complet avec exemples
  2. Maîtriser les opérateurs Java : Types, syntaxe et exemples pratiques
  3. Commentaires Java : Types, utilisation et bonnes pratiques
  4. Maîtriser la boucle for améliorée en Java : Syntaxe, exemples et bonnes pratiques
  5. Maîtriser les chaînes de caractères en Java : Création, méthodes et bonnes pratiques
  6. Maîtriser les interfaces Java : concepts, implémentation et bonnes pratiques
  7. Maîtriser le try-with-resources Java : gestion automatique des ressources expliquée
  8. Annotations Java expliquées : types, placement et exemples pratiques
  9. Assertions Java : guide pratique pour détecter les bugs et assurer la fiabilité du code