Статические методы и параметры типа в спецификации языка Java

StackOverflow https://stackoverflow.com//questions/23032381

  •  21-12-2019
  •  | 
  •  

Вопрос

Я читаю в JLS 7 следующее предложение.

Это ошибка времени компиляции, чтобы использовать имя параметра типа любого окружающего Декларация в заголовке или теле метода класса.

Пожалуйста, объясните его значение.

Это было полезно?

Решение

Это означает, что вы не можете сделать

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

Вы должны сделать

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

Общие типы статического метода не зависят от общих типов класса или других методов.

Так что вы даже можете сделать что-то вроде

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top