This question already has answers here:
What does <T> (angle brackets) mean in Java?

(6个答案)


3年前关闭。




在我们的代码库中,我看到了以下代码片段,但我无法弄清它是什么(这就是为什么我无法开始搜索更多信息)。代码段如下:
TypedId.< UserGroupsVO > valueOf( 1000L )

为了进一步说明,TypedId类的定义如下:
public final class TypedId< T > implements Serializable, Comparable< TypedId< T >>

在哪个主题下可以进一步了解此语法及其含义?

编辑

发表评论后,我需要澄清我的问题。在我的问题中,我不是指泛型。我不明白的部分是TypedId与之间的点,而与valueOf之间有一个空格。

最佳答案

静态方法valueOf

public static <T> TypedId<T> valueOf(long aValue) ...
              ^^^

具有通用类型参数T。这意味着,当您调用TypedId.valueOf(...)时,您还可以指定通用类型T是什么。这是通过
TypedId.<UserGroupsVO>valueOf(...)
        ^^^^^^^^^^^^^^

您的代码TypedId.< UserGroupsVO >valueOf中的空格仅是修饰性的:它们不会影响含义。

请注意,这不是因为TypedId是泛型类。泛型类可以具有非泛型静态方法。非泛型类可以具有泛型静态方法。

例如,这是带有泛型静态方法的非泛型类。
class Foo {
     public static <T> List<T> makeList() ...
}
...
Foo.<String>makeList(); // call with a generic type parameter

这是带有非泛型静态方法的泛型类。
class Bar<T> {
     public static void doThing() ...
}
...
Bar.doThing(); // call without a generic type parameter

09-25 15:35