[英]Java: Generic method or generic class
我看过这个签名,探索了一个库的实现:
public final class QueryResults<T> {
public static <T> QueryResults<T> emptyResults() {
return (QueryResults<T>) EMPTY;
};
}
我不太清楚:
T
时,为什么又将T
声明为函数签名? <T>
而不是T
? 由于类型擦除,泛型仅在编译时应用于类的实例 。 QueryResults<...>
作为静态标识符无效。
因此,要制作使用类型参数的静态方法,必须在方法上声明类型参数,并创建通用方法。
<T>
是类型参数的声明,而不是返回类型(返回类型为QueryResults<T>
)。
这些T
具有不同的范围。 类声明中的那个扩展了类的实例。 静态方法中的一个仅扩展到方法签名和主体。 您可以为这些类型变量使用不同的名称,以避免混淆。
关于问题的第二部分:该方法不返回<T>
。 它返回QueryResults<T>
。 前者是类型变量<T>
的声明。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.