【发布时间】:2015-08-10 09:27:45
【问题描述】:
我很难理解这个 return 语句的语法,尤其是前面的 C:
<C>
我对泛型很陌生,但我知道基础知识。谁能解释一下?
public abstract <C> CustomMap<K, C> map(Function<? super V, ? extends C> f)
【问题讨论】:
我很难理解这个 return 语句的语法,尤其是前面的 C:
<C>
我对泛型很陌生,但我知道基础知识。谁能解释一下?
public abstract <C> CustomMap<K, C> map(Function<? super V, ? extends C> f)
【问题讨论】:
<C> 不是返回类型。它是一个只能由map 方法使用的新泛型类型变量的声明。
由于map 方法似乎有额外的泛型类型变量——V 和K——它们的声明方式与C 不同,我们可以假设V 和K 是在类级别(包含此方法的类)声明为泛型类型变量。如果不是,V 和 K 将被视为常规标识符(即编译器将期望找到名称为 V 和 K 的类)。
根据您的方法的签名及其返回类型 (CustomMap),我可以假设此方法属于某个实现 Map<K,V> 接口的类。它接受Function,它接收V 类型的实例并返回C 类型的实例,因此可以合理地假设它将Map<K,V> 转换为Map<K,C>(即密钥保持不变并且值被转换)。
【讨论】: