测试对象是否为参数类型的实例

2022-08-31 10:33:26

有没有办法确定对象是否是泛型类型的实例?

public <T> test(Object obj) {
    if (obj instanceof T) {
        ...
    }
}

这显然是行不通的。有替代方案吗?就像我想使用Java反射来实例化一个类,然后检查以确保它是泛型类型。T


答案 1

执行此检查的唯一方法是,如果您有表示该类型的对象:Class

Class<T> type; //maybe passed into the method
if ( type.isInstance(obj) ) {
   //...
}

答案 2

为了扩展马克·彼得斯的样本,通常你需要做这样的事情:

Class<T> type; //maybe passed to the method
if ( type.isInstance(obj) ) {
   T t = type.cast(obj);
   // ...
}