Pregunta

Leí en la JLS 7 la siguiente oración.

Es un error de tiempo de compilación para usar el nombre de un parámetro de tipo de cualquier circundante Declaración en el encabezado o cuerpo de un método de clase.

Por favor explique su significado.

¿Fue útil?

Solución

significa que no puedes hacer

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

tienes que hacer

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

Los tipos genéricos de un método estático son independientes de los tipos genéricos de la clase u otros métodos.

para que pueda incluso hacer algo como

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top