2014-10-31 29 views
3

我有一個正常的POJO類似如下:Intellij IDEA從另一個對象實例生成更新方法。 (更新RealmObject)

public class Car extends RealmObject{ 

    private String name; 
    private int maxSpeed; 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public int getMaxSpeed() { 
     return maxSpeed; 
    } 

    public void setMaxSpeed(int maxSpeed) { 
     this.maxSpeed = maxSpeed; 
    } 
} 

有沒有一種方法來生成接收汽車的另一個​​實例的更新/複製方法?類似這樣的:

public void update(Car other){ 
    setName(other.getName()); 
    setMaxSpeed(other.getMaxSpeed()); 
} 

我從服務器接收JSON格式的汽車,並使用GSON獲取Car實例。如果我要救汽車在一個領域我必須做這樣的事情:

Car receivedCar = getCarFromServer(); 
Car car = realm.createObject(Car.class); 
car.setName(receivedCar.getName()); 
car.setMaxSpeed(receivedCar.getMaxSpeed()); 

注意,因爲境界我不能使用拷貝構造函數。

我的真實模特擁有超過25個領域,因此這將是一個殺手級的工作。我寧願生成一個更新方法,並做這樣的事情:

Car receivedCar = getCarFromServer(); 
Car car = realm.createObject(Car.class); 
car.update(receivedCar); 

有沒有人有任何想法如何讓我的工作更容易?

+0

你應該看看[推土機庫](http://dozer.sourceforge.net/)。它會爲你做這個。 – 2014-10-31 20:23:34

+0

我不需要複製所有字段。其中一些不應該改變,像RealmList。我合併了基督徒在他的回答中提出的建議。不過,@EngineerDollery如果你知道一個插件來生成那段代碼,我敢打賭它對別人有用。 – 2014-10-31 21:15:14

回答

1

基督教從這裏的王國。我們目前正在研究如何製作易於使用的JSON API。我們目前的工作正在進行中,可以在此請求中找到:https://github.com/realm/realm-java/pull/489。這基本上做你想要的作爲一個班輪。

它尚未存在於主存儲庫中,因此在此之前您必須手動構建Realm或創建一個類似於您所描述的複製方法。雖然反饋非常受歡迎。

+1

此拉取請求將非常有幫助。關於這個PR的時間表上的任何想法? – 2014-10-31 18:09:01

+0

太快了!我有和肯特安德森一樣的問題,何時可以使用? – 2014-10-31 18:10:55

+0

我沒有任何時間表,除非儘快,對不起。 – 2014-10-31 18:17:31