Java: 泛型返回语句语法

4

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

 <C>

我对泛型还比较陌生,但是我了解一些基础知识。有人可以解释一下吗?

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

8

<C> 不是一个返回类型。它是一个声明新的泛型类型变量的语句,只能由 map 方法使用。

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

根据您的方法签名及其返回类型 (CustomMap),我可以假设此方法属于实现 Map<K,V> 接口的某个类。它接受一个接收类型为 V 的实例并返回类型为 C 的实例的 Function,因此可以合理地假设它将 Map<K,V> 转换为 Map<K,C>(即键保持不变,值被转换)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接