有没有办法确定一个对象是否是泛型类型的实例?
public <T> test(Object obj) {
if (obj instanceof T) {
...
}
}
这显然是行不通的。有没有别的选择?例如,我希望使用Java反射来实例化一个类,然后进行检查以确保它是泛型T
类型。
发布于 2011-04-21 02:14:52
执行此检查的唯一方法是使用表示类型的Class
对象:
Class<T> type; //maybe passed into the method
if ( type.isInstance(obj) ) {
//...
}
发布于 2011-04-21 02:25:09
要扩展Mark Peters的示例,通常需要执行以下操作:
Class<T> type; //maybe passed to the method
if ( type.isInstance(obj) ) {
T t = type.cast(obj);
// ...
}
发布于 2018-02-02 15:58:14
如果您不想像Mark Peters提到的那样将Class类型作为参数传递,则可以使用以下代码。称赞大卫·奥米拉。
Class<T> type = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass())
.getActualTypeArguments()[0];
if (type.isInstance(obj)) {
...
}
https://stackoverflow.com/questions/5734720
复制相似问题