【发布时间】:2021-02-11 10:02:14
【问题描述】:
假设我有一个带有泛型参数的方法:
public <U> void genericMethod(U param) {
// doStuff
}
我也有两个类,其中一个扩展了另一个:
public class A {}
public class B extends A {}
我这样做:
A var = new B();
genericMethod(var);
在genericMethod中,U的类型是什么?
我传递的变量genericMethod被声明为A,但实际上是B,U的类型也是A或B?
我已尝试对其进行测试,但找不到在运行时获取 U 信息的方法。
【问题讨论】:
-
“什么是类型”到底是什么意思。
var是对 B 类型对象的引用。 -
“但我找不到在运行时获取 U 信息的方法”,因为在运行时没有关于 U 的任何信息。泛型纯粹是编译时间问题。现在知道了,你应该知道问题的答案了。
标签: java generics inheritance