我有以下代码.在运行时typeClassz是java.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)
Method.getParameterTypes()返回Class<?>[],所以你typeClassz只能是一个Class<?>,而不是一个ParameterizedType.
你应该使用getGenericParameterTypes(),返回一个Type[].