从Spring JdbcTemplate的queryForObject方法返回泛型类型

时间:2018-08-20 11:56:42

标签: java spring generics jdbc

我想创建一个通用方法,如下所示:

public<T,S,R> getCell(S column,R arg){
 return jdbcTemplate.queryForObject("select ? from PASS_IND_SP_LINK where PASS_IND_LINK_ID=?", new Object[]{column,arg}, T.class); 
}

但是T.class无法编译。我该怎么做才能使此方法返回T类型?

1 个答案:

答案 0 :(得分:2)

首先,您需要方法的返回类型。但是,如果您想返回T,可以这样:

 public<T,S,R> T getCell(S val1, R val2, Class<T> theClass){

    return jdbcTemplate.queryForObject("select ? from PASS_IND_SP_LINK where PASS_IND_LINK_ID=?", new Object[]{column,arg}, theClass);
}

您也必须通过课程。泛型中的T只是类型的元数据。调用它的方法并获取它的类不是实例。您需要在参数中传递它。像这样:

myObject.getCell("val1" , "val2", String.class);