为什么需要强制转换Java泛型方法参数类



我有一个通用方法:

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();

最新更新