为什么 Java 泛型方法参数 类 需要转换
Why do Java Generic Method Argument Classes Need to be Cast
我有一个通用方法:
public <T> boolean saveRow(T row, Class<T> rowClass) {
Mapper<T> rowMapper = mappingManager.mapper(rowClass);
rowMapper.save(row);
return true;
}
我想放弃第二个参数,因为我可以从 row.getClass()
.
推断出 rowClass
我注意到完成这项工作的唯一方法是将 row.getClass()
转换为 (Class<T>) row.getClass()
:
public <T> boolean saveRow(T row) {
Mapper<T> rowMapper = mappingManager.mapper((Class<T>) row.getClass());
rowMapper.save(row);
return true;
}
为什么需要强制转换?
谢谢!
因为Class.getClass()
不知道泛型。
Class<?>
无法替代 Class<T>
.
看签名:
public final native Class<?> getClass();
我有一个通用方法:
public <T> boolean saveRow(T row, Class<T> rowClass) {
Mapper<T> rowMapper = mappingManager.mapper(rowClass);
rowMapper.save(row);
return true;
}
我想放弃第二个参数,因为我可以从 row.getClass()
.
rowClass
我注意到完成这项工作的唯一方法是将 row.getClass()
转换为 (Class<T>) row.getClass()
:
public <T> boolean saveRow(T row) {
Mapper<T> rowMapper = mappingManager.mapper((Class<T>) row.getClass());
rowMapper.save(row);
return true;
}
为什么需要强制转换?
谢谢!
因为Class.getClass()
不知道泛型。
Class<?>
无法替代 Class<T>
.
看签名:
public final native Class<?> getClass();