java - Intellij Idea - 模棱两可的方法调用

标签 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);

当我尝试编译下一段代码时:

@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/

相关文章:

java - 为什么我只是有时会收到此错误?

java - 需要帮助安装和运行 Spring Petcare 示例应用程序

java - 如何从 Intellij IDEA 中的类创建 .jar 库

java - FileWriter 上出现意外的 FileNotFoundException

java - 最小化 setOnSeekBarChangeListener 样板

java - Eclipse 调试 - 在没有断点的情况下停止

c# - 泛型、重载决议和委托(delegate)(抱歉,找不到更好的标题)

java - 扩展类型参数的内联类

c# - 为什么 C# 编译器使用隐式运算符返回的值的父类型来调用重载运算符

java - 在不同计算机之间同步 IntelliJ 项目