我有以下代码。在运行时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);
}
答案 0 :(得分:6)
Method.getParameterTypes()
会返回Class<?>[]
,因此您的typeClassz
只能是Class<?>
,而不是ParameterizedType
。
您应该使用getGenericParameterTypes()
代替Type[]
。