我遇到了一個與使用Intellij Idea的Java相關的奇怪錯誤。Intellij Idea - 模糊方法調用
所以有這樣的接口:
<T> void save(T aEntity, DbTransaction dbTransaction, Class<T> clazz);
<T> void save(Collection<T> aEntities, DbTransaction dbTransaction, Class<T> clazz);
當我嘗試編譯下面的代碼:
@SuppressWarnings("unchecked")
@Override
public void save(Collection<T> aEntities, DbTransaction aDbTransaction) {
baseDao.save(aEntities, aDbTransaction, getClass((T) aEntities.toArray()[0]));
}
我收到的下一個編譯錯誤:
reference to save is ambiguous, both method <T>save(T,DbEntityHelper.DbTransaction,java.lang.Class<T>) in xzc.dao.IBaseDao and method <T>save(java.util.Collection<T>,DbEntityHelper.DbTransaction,java.lang.Class<T>) in xzc.dao.IBaseDao match
你有有任何想法嗎 ? 感謝您的幫助。
什麼是'的getClass()'簽名? – Saintali 2012-08-06 12:37:26
如何聲明baseDao?它是否參數化? – 2012-08-06 12:37:53
Nope,正如你從方法簽名中看到的,T在方法簽名中是「聲明的」。該接口根本沒有參數化。 – StKiller 2012-08-06 12:39:03