我今天看到了这段代码:
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();
并回答您最后的问题:
第一个通常在创建泛型类的实例时使用。它用于在类级别定义泛型类型,而第二个用于调用嵌套在某个类中的泛型静态方法。