通过java中的泛型类型生成对象

时间:2011-04-04 11:40:48

标签: java generics

我有一个如下代码片段。但它在list.add(mapper.mapRow())中给出错误; line说“类型List中的方法add(K)不适用于参数(Object)”。 我该如何解决?

感谢。

    public List<K>  fetchData(JStarRowMapper mapper) {
    List<K> list = new ArrayList<K>();
    list.add(mapper.mapRow());
    return list;
}




public class IncomingRowMapper<K> implements JStarRowMapper {
@Override
public IncomingVO mapRow(ResultSet rs) throws SQLException {

    IncomingVO vo = new IncomingVO();
    vo.setId(rs.getInt("id"));
    vo.setUsername(rs.getString("username"));
    vo.setProcessDate(rs.getTimestamp("process_date"));
    vo.setProcessCount(rs.getInt("process_count"));
    return vo;
}

}

public interface JStarRowMapper<K> {
abstract public K mapRow(ResultSet rs) throws SQLException;

}

2 个答案:

答案 0 :(得分:2)

在第一个片段中,您应该将mapper声明为

JStarRowMapper<K>

此外,mapRow不带参数调用,而需要ResultSet参数

答案 1 :(得分:0)

另一个问题是IncomingRowMapper应声明为:

public class IncomingRowMapper implements JStarRowMapper<IncomingVO> { ...