Java泛型命名约定



根据Java文档:

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

E-Element(被Java集合框架广泛使用)

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);
    }

这里使用的是R,从什么来源我可以知道R在这里的意思?

"Result"或"return type"。前者在JDK 8类中特别常见。

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

R-函数的结果类型

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

它非常简单。这里R代表"返回类型"。

如果你看看"适配器设计模式",它将一种类型转换为另一种类型,以使用两个完全不同的接口。在那里你可以找到这样的通用值。

若您正在编写这个方法,它转换或调用类型为T的对象,并返回另一类型的可观察对象,那个么对于返回值的类型,您将使用什么?泛型类型命名没有硬性规定。这里唯一适用的规则是它应该简短而有意义。

最新更新