首页 > 解决方案 > 通用返回类型

问题描述

解释一下这个方法的返回类型:

 protected <T> T getClientHolder(String holderName, Class<T> clazz)

我知道T引用模板并引用他在其参数中获得的类,但<T>在 T 之前的位置令人困惑。

标签: javagenerics

解决方案


<T>不是该方法的返回类型。这意味着泛型类型参数T在方法中声明getClientHolder(),并且只能由该方法使用。如果删除它,编译器会将该T方法的返回类型视为普通标识符,并会查找名为 的类或接口T

如果T是在包含该方法的类中声明的泛型类型参数,则无需<T>在此方法中声明。

protected <T>            T              getClientHolder(String holderName, Class<T> clazz)
          ---            -
          this is a      this is the 
          declaration    return type
          of a generic   of the method
          type parameter 

推荐阅读