gpt4 book ai didi

java - 使用泛型时类型不兼容

转载 作者:行者123 更新时间:2023-12-01 18:28:54 25 4
gpt4 key购买 nike

我有一个如下所示的类:

public class TrafficReportMapper implements RowMapper<TrafficReport> {

@Override
public TrafficReport mapRow(ResultSet rs, int rowNum) {
// Do something here
return new TrafficReport(....);
}
}

TrafficReport 是一个 POJO,我想用 DayTrafficReport 之类的东西扩展它,并创建一个扩展 TrafficReportMapper 的新映射器。所以我更改了 TrafficReportMapper 如下:

public class TrafficReportMapper<T extends TrafficReport> implements RowMapper<T> {

@Override
public T mapRow(ResultSet rs, int rowNum) {
// Exactly the same code as before
return new TrafficReport(....);
}
}

只有这一次我得到了

Incompatible Types: Required T; found TrafficReport

但问题是 TrafficReport 必须是 T 类型。我不确定我在这里缺少什么。

最佳答案

如果您创建TrafficReportMapper<DayTrafficReport>你的方法将变成:

@Override
public DayTrafficReport mapRow(ResultSet rs, int rowNum) {
return new TrafficReport(....);
}

(并不是真的,因为泛型被删除了,但这是一个很好的思考方式。)

但是TrafficReport 不是 DayTrafficReport 的子类型,所以你不能像这样返回它。

关于java - 使用泛型时类型不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25041520/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com