2012-02-19 91 views
6

我想知道第一个<T>代表下面一行Java代码。我已经阅读了泛型的几个教程,但没有一个示例在方法名称前有两个泛型。谢谢。这种Java泛型使用的含义是什么?

public <T> Provider<T> scope(Key<T> key, Provider<T> unscoped); 
+0

是的,我也不明白方法签名中的泛型。 – MJM 2012-02-19 08:33:00

回答

13

第一<T>是实际类型参数声明,即它说,该方法是通用的,具有类型参数T

第二个<T>只是方法返回类型的一部分,即该方法返回Provider<T>

如果第一个<T>被省略,返回类型Provider<T>将是无效的,因为T不会是一个类型的识别标识符/名称。 T仅被识别为一种类型,因为第一个<T>就是这样引入的。

+0

我仍然不知道方法签名中第一个的好处。 – MJM 2012-02-19 08:37:04

+0

所以如果方法使用多个类型参数,比如说T2,它会是这样吗? '公共提供范围(重点键,提供无范围,东西);' – 2012-02-19 08:43:22

+3

不,它看起来像'公共提供范围(重点键,提供无范围,T2的东西);' – 2012-02-19 08:46:18