Java:泛型 return 语句语法

Java: Generics return statement syntax

我很难理解这个 return 语句的语法,尤其是前导 C:

 <C>

我对泛型很陌生,但我了解基础知识。谁能解释一下?

public abstract <C> CustomMap<K, C> map(Function<? super V, ? extends C> f)

<C> 不是 return 类型。这是一个新的泛型类型变量的声明,只能由 map 方法使用。

由于 map 方法似乎有额外的泛型类型变量 - VK - 声明方式与 C 不同,我们可以假设 VK 在 class 级别(包含此方法的 class 级别)被声明为泛型类型变量。如果它们不是,VK 将被视为常规标识符(即编译器将期望找到名称为 VK 的 classes ).

根据您方法的签名及其 return 类型 (CustomMap),我可以假设此方法属于某个 class 实现 Map<K,V>界面。它接受 Function 接收类型 V 的实例和 returns 类型 C 的实例,因此假设它转换 Map<K,V> 是合理的到 Map<K,C>(即键保持不变,值被转换)。