在Java中,当我得到ResultSet
时,我创建了一个将其映射到指定类的方法。它或多或少看起来像这样:
public <T> T mapRow(ResultSet results, Class<T> type) {
所以,当我实际调用该类时,它看起来像这样:
mapRow(results, Row.class);
请帮我理解这一点。
mapRow<Row>(results);
?mapRow
的当前方式是,在方法调用之前是否有隐含的<Row>
?答案 0 :(得分:3)
您可以致电:
object.<Row>mapRow(results, Row.class);
但是你仍然需要第二个参数,你不能删除你想要做的事情。
这是因为由于generics erasure而无法在运行mapRow时知道T的类型。
答案 1 :(得分:2)
我正在调用mapRow的当前方式,在方法调用之前是否存在隐含?
<T> T mapRow()
声明的要点是T
从方法参数推断 或者为其分配结果的LHS类型。在您的情况下,您传入一个类对象,用于推断返回类型。
以上只是类参数目的的一半,第二部分是反射:mapRow
将在其上调用newInstance()
来创建返回的对象