http://www.mongodb.org/display/DOCS/Java+-+Saving+Objects+Using+DBObjectMongoDB:如何實現保存對象的PUT方法?
這個頁面是關於保存和檢索MongoDB中的對象。但是在實現DBObject之後,我必須重寫一堆方法。有誰知道如何實現PUT方法,以便「myTweet.put(」user「,userId);」能行得通?
http://www.mongodb.org/display/DOCS/Java+-+Saving+Objects+Using+DBObjectMongoDB:如何實現保存對象的PUT方法?
這個頁面是關於保存和檢索MongoDB中的對象。但是在實現DBObject之後,我必須重寫一堆方法。有誰知道如何實現PUT方法,以便「myTweet.put(」user「,userId);」能行得通?
無需實現DBObject只是延長BasicDBObject
class Tweet extends BasicDBObject {
public Tweet() {
super();
}
public Tweet(BasicDBObject base) {
super();
this.putAll(base);
}
}
Tweet myTweet = new Tweet();
myTweet.put("user", userId);
BasicDBObject實現DBObject以便擴展可以將其傳遞給需要實現DBObject
類中的任何函數的類。如果你想實現的接口你就必須提供一些容器類存儲鳴叫屬性BasicDBObject通過擴展名爲BasicBSONObject
另一個類,你可以在source看到這樣做,天真的實施將是這樣的:
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import org.bson.BSONObject;
import com.mongodb.DBObject;
public class Tweet implements DBObject {
private Map<String, Object> data;
private boolean partial;
public Tweet() {
data = new HashMap<>();
partial = false;
}
@Override
public Object put(String key, Object value) {
return data.put(key, value);
}
@SuppressWarnings("unchecked")
@Override
public void putAll(BSONObject o) {
data.putAll(o.toMap());
}
@SuppressWarnings({ "rawtypes", "unchecked" })
@Override
public void putAll(Map m) {
data.putAll(m);
}
@Override
public Object get(String key) {
return data.get(key);
}
@SuppressWarnings("rawtypes")
@Override
public Map toMap() {
return data;
}
@Override
public Object removeField(String key) {
return data.remove(key);
}
@Override
public boolean containsKey(String key) {
return data.containsKey(key);
}
@Override
public boolean containsField(String key) {
return data.containsKey(key);
}
@Override
public Set<String> keySet() {
return data.keySet();
}
@Override
public void markAsPartialObject() {
partial = true;
}
@Override
public boolean isPartialObject() {
return partial;
}
}
該類實現DBObject
並使用HashMap
來存儲其屬性。
此答案有幫助嗎? –