2017-01-13 181 views
2

我有一個通用的方法:爲什麼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; 
} 

爲什麼是必要的投?

謝謝!

+1

(BalusC的答案)https://stackoverflow.com/questions/7276096/getclass-of-a-generic-method-parameter-in-a-java –

回答

1

因爲Class.getClass()不知道通用。
Class<?>不能代替對Class<T>

看簽名:

public final native Class<?> getClass(); 
+0

謝謝很多!我的N00B不檢查簽名:) – Cristi

+0

歡迎您:)有時候答案不是很遠:) – davidxxx

相關問題