Java泛型类型参数命名约定范围

时间:2017-07-07 01:44:26

标签: java generics naming-conventions

Java documentation表示当有多个通用参数时,惯例是对第2,第3,第4类型使用S,U,V等。此约定是否适用于一个封闭的<>组或整个类的范围?

例如,如果我有一个具有两个使用不同泛型参数的单独方法的类,上述约定是否意味着我应该编写如下代码:

public abstract class MyClass
{
    public abstract <T extends Class1> T method1();
    public abstract <S extends Class2> S method2();
}

或者像这样:

public abstract class MyClass
{
    public abstract <T extends Class1> T method1();
    public abstract <T extends Class2> T method2();
}

1 个答案:

答案 0 :(得分:4)

第二个当然更传统。如果你有一个带有泛型方法的大型实用程序类,那么第一个模式就不会成功。

我们可以在openjdk中看到这个here的例子,以及像this guava类这样的流行库。请注意,在大多数方法中,它们都重复使用T作为类型变量。这允许其他标识符如E,K,V等保留一些语义含义。