MongoDB Java驱动程序:无法扩展MongoDatabase

时间:2015-11-09 23:52:21

标签: java mongodb mongodb-java database

我在MongoDB java应用程序上编码。

我想从mongoClient创建每个数据库的对象集合(类型MongoDatabase)。检查

下一步:我想扩展Type MongoDatabase以为我自己编写一些函数。 出现Folling错误: java.lang.ClassCastException:com.mongodb.MongoDatabaseImpl无法强制转换为model.ownMongoDatabase

我不知道为什么,但旧的Java驱动程序有一个DB-Class。对Java驱动程序(版本3)进行了一些更改,并且DB-Class的功能现在标记为已弃用。现在你必须使用MongoDatabase。但MongoDatabase是一个接口,所以没有机会为我自己的类扩展它?!

代码段:

public class MongodbInstance extends com.mongodb.MongoClient {

 private ArrayList<ownMongoDatabase > _mongodbDatabases = new ArrayList<ownMongoDatabase >();

 private void buildMongodbDatabases(){
   MongoCursor<String> iterator = this.listDatabaseNames().iterator(); // iterate through Databases

   while(iterator.hasNext()){
     this._mongodbDatabases.add((ownMongoDatabase) this.getDatabase(iterator.next())); // add Database-Object to Array
     }
   }
}


class ownMongoDatabase implements MongoDatabase {

}

是否存在错误/编码失败? 谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

this._mongodbDatabases.add((ownMongoDatabase)this.getDatabase(iterator.next()));

在此行中,您尝试将MongoDatabaseImpl分配给您自己的MongoDatabase。这肯定会抛出类强制转换异常。

假设您的A类是父类, B类和C类延伸至A类。 您不能将B类分配给C类。

尝试has-A关系而不是is-A关系。