【发布时间】:2020-07-26 03:48:25
【问题描述】:
假设我有两个参数的泛型方法。
<T> void compare(T a, T b) {}
事实证明,可以传递任何类型的参数:T 可能总是被解析为Object,因为任何其他类型都是一个Object。
有没有办法让接受完全相同参数的方法与任何类型都一样?
【问题讨论】:
-
这里说的是同一个编译时类型还是同一个运行时类型?
-
考虑以下:
Object a = new Object(), b = new Object(); inst.compare(a, b);这样可以吗? -
如果需要检查它们是否具有相同的运行时类型:
a.getClass() == b.getClass(). -
编译时间 - 我希望
compare("foo", 42)编译时出错