2014-04-11 30 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());