StK*_*ler 4 java generics intellij-idea
我使用Intellij Idea遇到了与Java相关的奇怪错误.
所以有这样的界面:
<T> void save(T aEntity, DbTransaction dbTransaction, Class<T> clazz);
<T> void save(Collection<T> aEntities, DbTransaction dbTransaction, Class<T> clazz);
Run Code Online (Sandbox Code Playgroud)
当我尝试编译下一个代码时:
@SuppressWarnings("unchecked")
@Override
public void save(Collection<T> aEntities, DbTransaction aDbTransaction) {
baseDao.save(aEntities, aDbTransaction, getClass((T) aEntities.toArray()[0]));
}
Run Code Online (Sandbox Code Playgroud)
我收到下一个编译错误:
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
Run Code Online (Sandbox Code Playgroud)
你有什么想法 ?提前感谢您的帮助.
您有两种类型T
,它们不能假设它们是相同的.T
可能是Collection<T>
第二种方法,也可能是第一种方法T
.
您可以使用
baseDao.<T>save(....
Run Code Online (Sandbox Code Playgroud)
要么
baseDao.<Collection<T>>save(....
Run Code Online (Sandbox Code Playgroud)
弄清楚它应该是哪一个.使它们具有T
相同的名称对编译器没有帮助,可能只是令人困惑.
归档时间: |
|
查看次数: |
19512 次 |
最近记录: |