我今天看到了这段代码:

    ImmutableMap<Class<? extends ClientCommand>, CommandProcessorInterface> immutableMap =
            ImmutableMap.<Class<? extends  ClientCommand>, CommandProcessorInterface>of(...

这个语法是什么意思?
ImmutableMap.<Class ..
我知道泛型在类名之后。没有?

之间有什么区别?
ImmutableMap<Class..ImmutableMap.<Class..

最佳答案

这意味着您正在调用一个通用的静态方法,在of类中称为ImmutableMap

它与嵌套在某些类中的static方法几乎相同:

SomeClass.staticMethod();

对于您的方法定义了类型参数的情况,您可以显式提供泛型,并且可以这样做:
SomeClass.<Type>genericStaticMethod();

并回答您最后的问题:



第一个通常在创建泛型类的实例时使用。它用于在类级别定义泛型类型,而第二个用于调用嵌套在某个类中的泛型静态方法。

10-08 18:50