Статические методы и параметры типа в спецификации языка Java
-
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) {
}
}
. Не связан с StackOverflow