我有一个公开的Connection
类,它扩展了JsonObject
。要存储Connection
对象,我有以下静态方法:
public static Future<Void> storeConnection(MongoClient mc, Connection cnx) {
Future<Void> fut = Future.future();
mc.save("coll", cnx, ar -> {
if(ar.succeeded()) {
fut.complete();
}
else {
fut.fail(ar.cause());
}
});
return fut;
}
呼叫mc.save("coll", cnx, ar -> {...})
时出现异常org.bson.codecs.configuration.CodecConfigurationException
。我尝试了一些(显然无用的)事情,例如将签名更改为cnx
为JsonObject
,将cnx
转换为JsonObject
甚至创建JsonObject toJsonObject() { return (JsonObject)this; }
方法。我有同样的例外。
但是,当我将mc.save("coll", cnx, ar -> {...})
替换为mc.save("coll", new JsonObject().put("foo", "bar"), ar -> {...})
时,写入成功。
我不知道自己在做什么错。
更新:我按组成更改了继承:
public class Connection {
private JsonObject data;
...
// and then
public JsonObject jsonObject() { return data; }
...
}
,然后mc.save("coll", cnx.jsonObject(), ar -> { ... });
不再抱怨。
但是,我不明白继承案例有什么问题。