MongoTemplate 查找参数化 Class

MongoTemplate Find Parameterized Class

使用 MongoTemplate,在使用我称为对象的参数化类型的方法时,我在使用 find 方法时遇到了问题。我可能无法准确描述这个,所以我举个例子:

public class Animal<T> {
  private String name
  private T attributes
}

public class Dog {
  private Integer weight
  ...
}

所以我将那些存储在 Mongo 中,例如:

{
  "name": "Bernese Mountain Dog"
  "attributes": {
     "weight": 100
  }
}

如果将其存储为 Dog 文档,我将能够执行如下操作:

mongoTemplate.find(query, Dog.class)

然后得到 List<Dog> returned。但是如果我的 return 类型类似于 List<Animal<T>>,那么如果我尝试做类似的事情:

mongoTemplate.find(query, Animal.class)

这将给出无法转换它的错误。这也是不可能的代码:

mongoTemplate.find(query, Animal<Dog>.class) 

因为那只是错误的语法。

想法?

我最终发现有效的是:

mongoTemplate.find(query, (Class<Animal<T>>)(Class<T>) Animal.class);

这看起来很不靠谱,但确实有效。我确实收到有关未经检查的演员表的警告,如果不压制它们,我将无法解决这些问题。如果谁有更好的解决办法,请告诉我。