java.util.Set是参数化类型检查失败

时间:2017-07-07 12:35:31

标签: java java-8

我有以下代码。在运行时typeClasszjava.util.Set。但是ParameterizedType的typeClassz实例的计算结果为false。对于java.util.Set,它转到else子句。有什么想法吗?

final Type typeClassz = methods.get(index).getParameterTypes()[0];
if(typeClassz instanceof ParameterizedType){
    final ParameterizedType classType = (ParameterizedType) ((ParameterizedType) typeClassz).getActualTypeArguments()[0];
    return mongoTemplate.findOne(query, (Class<?>) classType.getRawType());
}else{
    return mongoTemplate.findOne(query, (Class<?>) typeClassz);
}

1 个答案:

答案 0 :(得分:6)

Method.getParameterTypes()会返回Class<?>[],因此您的typeClassz只能是Class<?>,而不是ParameterizedType

您应该使用getGenericParameterTypes()代替Type[]