Java泛型命名约定

时间:2016-03-31 04:29:25

标签: java generics

根据the Java documentation

  

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

     

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

     

K - Key

     

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在这里的含义?

2 个答案:

答案 0 :(得分:8)

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

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

  

R - 函数结果的类型

模式<R>, ?R>没有出现在OpenJDK 7的类中(引用:I downloaded the source并且执行了grep),但它们确实出现在几个类中以构建Java工具链本身,就像javac一样。在那里,R有时似乎stand for "result"sometimes for "return type."

答案 1 :(得分:1)

很简单。这里R代表&#34;返回类型&#34;。

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

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

相关问题