java - 点运算符 `.`(在通用参数之前)是什么意思?

标签 java generics syntax guava

我今天看到这段代码:

    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();

然后回答你最后一个问题:

What is the difference between ImmutableMap<Class...> and ImmutableMap.<Class... ?

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

关于java - 点运算符 `.`(在通用参数之前)是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27166610/

相关文章:

java - 为什么 Java 不允许基于类型参数的重载?

Java泛型和继承递归

java - 如何使用通用整数在类中创建整数对象

bash:$[<算术表达式>] 与 $((<算术表达式>))

java - java中如何通过两种方法运行一个变量

java - Tomcat 部署配置即服务

haskell - 函数组合 (.) 如何从内部工作?

c++ - 这个c++声明的目的是什么?

java - 未经检查的转换警告与对泛型类型的引用

java - 替换 fragment 不起作用/我是否以正确的方式执行此操作?