我有以下代码。在运行时,typeClasszjava.util.Set。但是ParameterizedType的typeClassz instance评估为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);
}

最佳答案

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

您应该改用getGenericParameterTypes(),它返回一个Type[]

关于java - java.util.Set无法通过ParameterizedType检查,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44970936/

10-10 02:37