Java:泛型返回语句语法

use*_*859 4 java generics syntax

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

 <C>
Run Code Online (Sandbox Code Playgroud)

我对仿制药很新,但我知道基础知识.有谁能解释一下?

public abstract <C> CustomMap<K, C> map(Function<? super V, ? extends C> f)
Run Code Online (Sandbox Code Playgroud)

Era*_*ran 8

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

由于该map方法似乎具有其他泛型类型变量 - V并且K- 没有以相同的方式声明C,我们可以假设V并且K在类级别(包含此方法的类)声明为泛型类型变量.如果他们都没有,VK将被视为常规标识符(即编译器会期望找到具有该名称的类VK).

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