Java泛型命名约定

Java泛型命名约定,java,generics,Java,Generics,根据: 最常用的类型参数名称有: E-Element(Java集合框架广泛使用) K键 N-数 T型 V值 S、 U型、V型等-第二、第三、第四类 然而,我见过这样的代码 public <R> Observable<R> compose(Transformer<? super T, ? extends R> transformer) { return ((Transformer<T, R>) transformer).call(th

根据:

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

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

K键

N-数

T型

V值

S、 U型、V型等-第二、第三、第四类

然而,我见过这样的代码

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

公共可观察组合(Transformer非常简单。这里R代表“返回类型”

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

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

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

考虑JavaDocs,例如:

R-函数结果的类型


模式
,?R>
不会出现在OpenJDK 7的类中(引文:I和did a grep),但它们确实出现在几个类中,用于构建Java工具链本身,比如javac。在那里,R有时似乎是,而且

感谢澄清,但我在哪里可以找到关于它的文档?谢谢,这个定义只存在于Java8功能接口中还是跨Java的其他版本?@WenChao更新了我的答案w我对Java 7有点了解。谢谢你的努力!根据你发布的链接,似乎使用了另一种命名约定,但没有很好的文档记录。真的希望有一个关于如何以及何时使用这些命名的清晰解释,而不是查看Java源代码。同意!如果Oracle更新了你参考的约定页面,那就太好了在您的问题中,特别是考虑到lambdas可能会看到R类型名称的增加。