在我试图理解的 Android 框架中,我发现这样的语句:
public Call<GeneralResponseSO> performApiCall(/*...*/) {
// ...
}
但是 GeneralResponseSO
的定义如下:
public class GeneralResponseSO<T> {
// ...
}
api 方法不应该指定 T
的类型吗?我似乎无法理解为什么编译器没有给出错误,以及 T
的类型是什么。
或者编译器是否会神奇地过滤掉类中的所有泛型?这样所有使用 T
的变量/方法都会被删除吗?但我并不期望 Java 编译器能够发挥如此神奇的作用。
最佳答案
没有类型参数的泛型类/接口(interface)是原始类型
。
原始类型在编译过程中未进行检查(您可能会在 Intellij 等 IDE 中看到警告),并且可能会在运行时引发异常。
Note: Example.java uses unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details.
关于java - 没有参数的参数化类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53943340/