我在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