代码之家  ›  专栏  ›  技术社区  ›  Chris Lercher

“x.<string,string>method()”中泛型语法的名称是什么?

  •  4
  • Chris Lercher  · 技术社区  · 14 年前

    有时需要这种(看起来比较奇怪的)语法来避免类型不匹配。但实际上,那个语法的名称是什么?

    使用示例来自 Google Guava (R07):

    ImmutableMap 定义方法

    public static <K, V> Builder<K, V> builder()
    

    它可以这样使用:

    ImmutableMap<String, String> map = 
            ImmutableMap.<String, String>builder().put("a", "A").build();
    

    通过以下的内联版本:

    Builder<String, String> builder = ImmutableMap.builder();       
    ImmutableMap<String, String> map = builder.put("a", "A").build();
    
    2 回复  |  直到 14 年前
        1
  •  6
  •   aioobe    14 年前

    我不认为那个语法有特殊的名称。我看过JLS,它只是提到它是“一个呼叫 通用方法 “。

    在您的案例中,可以将其缩小到“对非静态泛型方法的调用”。

    如果您所指的是类型参数存在于调用端,那么只需说“对泛型方法的调用” 具有显式类型参数 “。

    举一个JLS中提到的例子

    在一般方法的情况下(§8.4.4),决定方法是否适用需要确定实际的类型参数。实际类型参数可以显式或隐式传递。如果它们是隐式传递的,则必须从参数表达式的类型中推断出来(§15.12.2.7)。

        2
  •  3
  •   akf    14 年前

    如果您所说的语法是尖括号,那么它们被称为类型参数。