为什么需要编译Java通用方法参数类

时间:2017-01-13 12:28:25

标签: java generics generic-method

我有一个通用的方法:

public <T> boolean saveRow(T row, Class<T> rowClass) {
    Mapper<T> rowMapper = mappingManager.mapper(rowClass);
    rowMapper.save(row);

    return true;
}

我想抛弃第二个参数,因为我可以从rowClass推断row.getClass()

我注意到,实现这项工作的唯一方法是将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;
}

为什么演员必要?

谢谢!

1 个答案:

答案 0 :(得分:1)

因为Class.getClass()不了解通用。
 Class<?>无法替代Class<T>

看签名:

public final native Class<?> getClass();