我正在尝试创建一个通用方法。我的 dto 是:
public class Master {
private String string;
private Date date;
public String getString() {
return this.string;
}
public Date getDate() {
return this.date;
}
public void setString(String string) {
this.string = string;
}
public void setDate(Date date) {
this.date = date;
}
}
扩展 Master 的我的 Child 类是:
public class Child extends Master {
private Date newDate;
public Date getNewDate() {
return this.newDate;
}
public void setNewDate(Date newDate) {
this.newDate = newDate;
}
}
现在,我想做的是创建一个通用方法来获取 -
public static <T extends Master> Map<String, Map<Date, List<T extends Master>>> getRecalculateMasterMappedByInstrumentIdAndDate(List<T extends Master> masters) {
return masters.stream().collect(Collectors.groupingBy(Child::getString, Collectors.groupingBy(x -> org.apache.commons.lang3.time.DateUtils.truncate(x.getDate(), Calendar.DAY_OF_MONTH))));
}
上面的内容在编译时给我一个错误。我如何为其编写通用方法?
最佳答案
删除声明后的绑定(bind):
- 返回类型:
Map<String, Map<Date, List<T>>>
- 参数类型:
List<T> masters
.
只能使用带有通配符 ( ?
) 的边界,或者在类型变量的声明中使用边界。
关于Java Generics WildCard - 如何在此处将泛型与 Lambda 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55745540/