2014-04-11 29 views
1

我有一个类如何从Generic类创建BeanPropertyRowMapper?

public class WFWSimpleDAOImpl<ObjectClass> implements WFWSimpleDAO<ObjectClass> { 

包含的方法

public List<ObjectClass> retrieve(Object[] params) throws Exception { 

返回对象的类型化列表

return (List<ObjectClass>) getJdbcTemplate().query(sqlToExec, params, new BeanPropertyRowMapper<ObjectClass>()) 

BeanPropertyRowMapper构造函数需要参数来定义映射类

BeanPropertyRowMapper(Class mappedClass) 

粗略我需要在下一个:

BeanPropertyRowMapper(ObjectClass) 

,但我得到编译器错误消息

ObjectClass can not be resolved to a variable 

我应该怎么做类型转换的情况?

+0

'ObjectClass.class' –

+0

@peeskillet啊,这是第一次我做了...但得到的错误:非法用于类型参数的类文字ObjectClass – mad

+0

您是否将它传递给构造函数?我认为你不需要参加它。 '新的BeanPropertyRowMapper(ObjectClass.class)'。见[docs](http://docs.spring.io/spring/docs/3.0.x/api/org/springframework/jdbc/core/BeanPropertyRowMapper.html#BeanPropertyRowMapper%28java.lang.Class%29) –

回答

1

解决方案并非如我所料。最后我用思考和做出这样:

Class<ObjectClass> classOfObjectClass = (Class<ObjectClass>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0]; 
return (List<ObjectClass>) getJdbcTemplate().query(sqlToExec, params, new BeanPropertyRowMapper(classOfObjectClass)); 
2

使用TypeTools备选:

Class<?> objClass = TypeResolver.resolveRawArgument(WFWSimpleDAO.class, dao.getClass());