繁体   English   中英

Java:通用方法或通用类

[英]Java: Generic method or generic class

我看过这个签名,探索了一个库的实现:

public final class QueryResults<T> {
    public static <T> QueryResults<T> emptyResults() {
        return (QueryResults<T>) EMPTY;
    };
}

我不太清楚:

  1. 当已经在类定义中声明了T时,为什么又将T声明为函数签名?
  2. 为什么方法返回<T>而不是T

由于类型擦除,泛型仅在编译时应用于类的实例 QueryResults<...>作为静态标识符无效。

因此,要制作使用类型参数的静态方法,必须在方法上声明类型参数,并创建通用方法。

<T>是类型参数的声明,而不是返回类型(返回类型为QueryResults<T> )。

这些T具有不同的范围。 类声明中的那个扩展了类的实例。 静态方法中的一个仅扩展到方法签名和主体。 您可以为这些类型变量使用不同的名称,以避免混淆。

关于问题的第二部分:该方法不返回<T> 它返回QueryResults<T> 前者是类型变量<T>的声明。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM