与类的静态成员的泛型混淆

luk*_*uky 1 java generics

以下代码对我来说非常困惑.

public class Test<T> {
  public static <T> Test<T> ok(T result) {
  ..
Run Code Online (Sandbox Code Playgroud)

我理解班级名称中的泛型.我能理解"ok"方法是否会像这样

public static Test<T> ok(T result) {
Run Code Online (Sandbox Code Playgroud)

或这个

public static T ok(T result) {
Run Code Online (Sandbox Code Playgroud)

但是为什么在Test <T>返回类型之前有额外的<T>我不明白.

jur*_*rez 5

这个例子实际上相当于

public class Test<T> {
  public static <U> Test<U> ok(U result) {
  ..
Run Code Online (Sandbox Code Playgroud)

另一个<T>是指不同的泛型类型,仅适用于该方法.为避免混淆,最好为不同的事物使用不同的名称.