Aller au contenu

Java — Méthode static générique

Les méthodes static peuvent être génériques, même si la classe ne l’est pas.


1. Idée simple

Une méthode static peut définir son propre type générique

➡️ indépendamment de la classe


2. Exemple

public class Utils {
    public static <T> void test(T t) {
        System.out.println(t);
    }
}

ici :

  • <T> est défini au niveau de la méthode
  • fonctionne avec n’importe quel type

Utilisation

Utils.test("hello");
Utils.test(123);

3. Pourquoi ça marche ?

une méthode static :

  • n’a pas accès au type générique de la classe
  • doit définir son propre <T>

4. Piège classique

class Box<T> {
    static void test(T t) {} // ❌ erreur
}

Pourquoi ?

  • T appartient à la classe
  • une méthode static ne peut pas y accéder

Solution

class Box<T> {
    static <T> void test(T t) {} // ✔️ OK
}

on redéfinit <T> au niveau méthode


5. À retenir

  • static + générique = ✔️ possible
  • mais nécessite déclaration <T> dans la méthode
  • indépendant de la classe

6. Questions classiques

Q1

une méthode static peut être générique ? Oui


Q2

peut-elle utiliser le <T> de la classe ? Non


Q3

solution ? définir <T> dans la méthode


7. À retenir (version rapide)

  • ✔️ public static <T> void test(T t)
  • ❌ utiliser <T> de la classe

🧾 En résumé

  • les méthodes static peuvent être génériques
  • elles doivent déclarer leur propre type
  • elles sont indépendantes de la classe

“Static methods can be generic independently of the class.”


Voir aussi