Métodos estáticos e parâmetros de tipo na especificação da linguagem Java
-
21-12-2019 - |
Pergunta
Li no JLS 7 a seguinte frase.
É um erro de tempo de compilação usar o nome de um parâmetro de tipo de qualquer declaração circundante no cabeçalho ou corpo de um método de classe.
Por favor, explique seu significado.
Solução
Isso significa que você não pode fazer
class Test<T> {
static void f(T a) {
}
}
Você tem que fazer
class Test<T> {
static <T> void f(T a) {
}
}
Os tipos genéricos de um método estático são independentes dos tipos genéricos da classe ou de outros métodos.
Então você pode até fazer algo como
class Test {
static <A, B, C> void f(A a, B b, C c) {
}
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow