0

私は次のクラスを持っています:

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 を構築するための単純な異なるアプローチであり、MongoDB インスタンスを照会して一連の結果を返すために方法 3 に渡されます。

コンパイラは、メソッド 1 と 2 の return ステートメントで文句を言います。

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

どうしてこれなの?方法 2 をコメント アウトすると、プログラムはコンパイルされます。ただし、方法 1 をコメント アウトすると、同じコンパイラ エラーが発生しますが、代わりに方法 2 に対して発生します。

4

1 に答える 1