我有这个问题
一种从一个类中删除不需要的细节并返回包含所需细节的对象集合的方法。问题是我希望这种方法能够与不同的类一起使用(尽管它们基于一个抽象),所以我使用泛型类型。问题是,在某一时刻我需要创建 的一个实例,这是不可能的。我寻找一些出路,但它似乎不适合我的情况。 所以,代码如下
private <T extends RestMandate> List<T> toRestMandate(List<CardMandate> mandates ) {
List<T> restMandates = new ArrayList<>(mandates == null ? 0
: mandates.size());
if (mandates != null) {
for (CardMandate mandate : mandates) {
restMandates.add(new T(mandate));
}
}
return restMandates;
}
RestMandate 是基类,CardMandate 是我获取的信息。有什么想法吗?
最佳答案
由于泛型类型参数在运行时被删除,因此您无法像您尝试的那样引用它。唯一的出路是类型标签参数+反射实例化。
更好的选择是重新设计您的解决方案来解决这个问题,而不依赖泛型和类型标签。而是利用动态方法分派(dispatch):向 RestMandate
添加一个方法,该方法将返回转换为所需类型的对象。
关于java - Java 中的新 <T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19001711/