java 泛型 问题

小银 发布于 2012/07/31 15:01
阅读 210
收藏 0

小弟有个很基础的问题请教。。。万望各位大大不要见笑。。。

最近在看springJdbc的源码。。。然后有个非常困扰的泛型问题。。不多说。。上代码片段

public <T> T queryForObject(String sql, RowMapper<T> rowMapper) throws DataAccessException {
		List<T> results = query(sql, rowMapper);
		return DataAccessUtils.requiredSingleResult(results);
	}

这个是spring中的一个方法。。。求问这个方法的返回类型是什么啊。。。十分看不懂,看调用它的方法,它时而可以作为一个Map返回,又可以作为一个List返回,又有时作为一个Object返回。。。求解惑。。万分感谢

加载中
0
樂
作为一个对象返回,你传进去的T是什么对象,就返回什么对象
小银
小银
回复 @樂 : 好的多谢啦
樂
回复 @小银 : http://mopishv0.blog.163.com/blog/static/5445593220101016102129741/ 这个解释的很清楚,"<T> T" 不能强制转换 。
小银
小银
那这样的话不应该是 public T xxxxx(){}样子的方法么?
0
逝水fox
逝水fox

T有些书上称为类型变量,调用这个函数时,rowMapper参数的类型匹配RowMapper<T>得到T的具体类型。比如你传入的四个RowMapper<String>参数,这个函数的返回值就是String

函数最开始的<T>只是表示函数中的T是类型变量而不是实际存在的类型。

逝水fox
逝水fox
回复 @小银 : 呃,最好找下Java泛型的相关资料和语法书看看。一两句话应该难消化
小银
小银
有点深奥。。容我消化消化。。。很感谢
0
小银
小银
多谢各位大侠。。小弟完全明白了,。。事情搁置了好久。。今天突然开窍了写了些代码一测,果然是这样。。完全理解啦。。。
返回顶部
顶部