为什么在返回类型之前为静态泛型方法键入参数

ski*_*kip 5 java generics methods static generic-method

以下noGood方法给出了编译错误,因为它在返回类型之前省略了正式类型参数T.

public static T noGood(T t) {
  return t;
}
Run Code Online (Sandbox Code Playgroud)

有人可以帮我理解为什么静态泛型方法在返回类型之前需要一个类型参数?非静态方法不需要它吗?

Mur*_*nik 5

T实例化类时声明类型参数().因此,实例方法不需要类型参数,因为它是由实例定义的.

static另一方面,方法不属于实例 - 它们属于类.由于没有实例来获取类型信息,因此必须为方法本身指定.