我在使用 Intellij Idea 时遇到了一个与 Java 相关的奇怪错误。
于是就有了这样的界面:
<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
你有什么想法吗? 提前感谢您的帮助。
最佳答案
你有两个类型叫做 T
它不能假设它们是相同的。 T
可能是 Collection<T>
在第二种方法中,或者它可以是 T
在第一个。
你可以使用
baseDao.<T>save(....
或
baseDao.<Collection<T>>save(....
明确应该是哪一个。使它们成为 T
相同的名称对编译器没有帮助,可能只会造成混淆。
关于java - Intellij Idea - 模棱两可的方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11828355/