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
方法似乎有额外的泛型类型变量 - V
和 K
- 声明方式与 C
不同,我们可以假设 V
和 K
在 class 级别(包含此方法的 class 级别)被声明为泛型类型变量。如果它们不是,V
和 K
将被视为常规标识符(即编译器将期望找到名称为 V
和 K
的 classes ).
根据您方法的签名及其 return 类型 (CustomMap
),我可以假设此方法属于某个 class 实现 Map<K,V>
界面。它接受 Function
接收类型 V
的实例和 returns 类型 C
的实例,因此假设它转换 Map<K,V>
是合理的到 Map<K,C>
(即键保持不变,值被转换)。
我很难理解这个 return 语句的语法,尤其是前导 C:
<C>
我对泛型很陌生,但我了解基础知识。谁能解释一下?
public abstract <C> CustomMap<K, C> map(Function<? super V, ? extends C> f)
<C>
不是 return 类型。这是一个新的泛型类型变量的声明,只能由 map
方法使用。
由于 map
方法似乎有额外的泛型类型变量 - V
和 K
- 声明方式与 C
不同,我们可以假设 V
和 K
在 class 级别(包含此方法的 class 级别)被声明为泛型类型变量。如果它们不是,V
和 K
将被视为常规标识符(即编译器将期望找到名称为 V
和 K
的 classes ).
根据您方法的签名及其 return 类型 (CustomMap
),我可以假设此方法属于某个 class 实现 Map<K,V>
界面。它接受 Function
接收类型 V
的实例和 returns 类型 C
的实例,因此假设它转换 Map<K,V>
是合理的到 Map<K,C>
(即键保持不变,值被转换)。