Java泛型命名约定

Wen*_*hao 7 java generics

根据Java文档:

最常用的类型参数名称是:

E - Element(Java Collections Framework广泛使用)

K - 钥匙

N - 数字

T型

V - 价值

S,U,V等 - 第2,第3,第4类型

但是,我看过这样的代码

public <R> Observable<R> compose(Transformer<? super T, ? extends R> transformer) {
        return ((Transformer<T, R>) transformer).call(this);
    }
Run Code Online (Sandbox Code Playgroud)

这里是使用R,从哪个来源我可以找到R在这里的含义?

ysh*_*vit 8

"结果"或"返回类型".前者在JDK 8类中特别常见.

考虑java.util.function.Function的JavaDocs ,例如:

R - 函数结果的类型

模式<R>, ?R>没有出现在OpenJDK 7的类中(引用:我下载了源代码并执行了grep),但它们确实出现在几个类中,用于构建Java工具链本身,如javac.在那里,R有时似乎代表"结果",有时代表"返回类型".