Question

J'ai lu dans la JLS 7 la phrase suivante.

C'est une erreur de compilation pour utiliser le nom d'un paramètre de type de tout environnement entourant. Déclaration dans l'en-tête ou le corps d'une méthode de classe.

S'il vous plaît expliquer sa signification.

Était-ce utile?

La solution

Cela signifie que vous ne pouvez pas faire

class Test<T> {
    static void f(T a) {
    }
}

vous devez faire

class Test<T> {
    static <T> void f(T a) {
    }
}

Les types génériques d'une méthode statique sont indépendants des types génériques de la classe ou d'autres méthodes.

Vous pouvez même faire quelque chose comme

class Test {
    static <A, B, C> void f(A a, B b, C c) {
    }
}

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top