为什么这种方法含糊不清?

时间:2013-11-01 07:30:25

标签: java mongodb overloading

我有以下课程:

public abstract class AbstractMongoDAO<T extends AbstractChiliEntity> implements IDAO<ObjectId, T> {

   // Method 1    
   protected List<DBObject> getByQuery(Object... pairs) {
       DBObject dbobject = //...
       return getByQuery(dbobject);
   }

   // Method 2    
   protected List<DBObject> getByQuery(Map<String, Object> map) {
       DBObject dbobject = //...
       return getByQuery(dbobject);
   }

   // Method 3
   protected List<DBObject> getByQuery(DBObject query) {
       List<DBObject> dbobjects = //...
       return dbobjects;
   }

   // Inherited methods here - they have nothing at all to do with the methods above.
}

方法1和方法2只是构造DBObject的不同方法,然后将其传递给方法3,以便查询MongoDB实例并返回一组结果。

编译器在方法1和2的return语句中抱怨:

The method getByQuery(Object[]) is ambiguous for the type AbstractMongoDAO<T>

这是为什么?如果我注释掉方法2,程序将编译。但是,如果我注释掉方法1,我会得到相同的编译器错误,但是对于方法2而言。

1 个答案:

答案 0 :(得分:0)

原来这是Eclipse的一个问题,它报告这是一个错误,当它不是。我将提交错误报告。

使用的Eclipse版本是基于Eclipse 4.3的Java EE构建,构建ID:20130919-0819。