【问题标题】:Why do Java Generic Method Argument Classes Need to be Cast为什么需要强制转换 Java 泛型方法参数类
【发布时间】:2017-01-13 20:33:37
【问题描述】:

我有一个通用方法:

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&lt;T&gt;) row.getClass()

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

    return true;
}

为什么需要演员表?

谢谢!

【问题讨论】:

标签: java generics generic-method


【解决方案1】:

因为Class.getClass() 不知道泛型。
Class&lt;?&gt; 不能替代Class&lt;T&gt;

看签名:

public final native Class<?> getClass();

【讨论】:

  • 非常感谢! N00b 我没有检查签名:)
  • 不客气 :) 有时答案不是很远 :)
猜你喜欢
  • 2011-12-28
  • 1970-01-01
  • 2021-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多