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

Sau*_*mar 2 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);
}
Run Code Online (Sandbox Code Playgroud)

Did*_*r L 6

Method.getParameterTypes()返回Class<?>[],所以你typeClassz只能是一个Class<?>,而不是一个ParameterizedType.

你应该使用getGenericParameterTypes(),返回一个Type[].