将A类对象复制到B类对象,其中A和B的组成非常相似

时间:2014-12-24 19:13:56

标签: java

我正在尝试执行以下冗余代码 - 将类FeedDBTableRow的对象复制到Feed对象中 - 它们大多数都有重叠的变量集,我试图复制这些常见的变量集。是否有设计模式或注释处理器可以帮助我减少这些(可能容易出错的)代码行?

这样做的原因基本上我想使用Reonofit与GSon和Realm(和Realm由于它自己的构造,需要Pojo从RealmObject类扩展,而这样做会产生GSON错误 - 它在几个地方被记录)

public static Feed getFeedFromDBFeedRow(FeedDBTableRow f){

    Feed x = new Feed();
    x.setId(f.getId());
    x.setText(f.getText());
    x.setTime_created(f.getTime_created());
    x.setTime_modified(f.getTime_modified());
    x.setComments_count(f.getComments_count());
    x.setLikes_count(f.getLikes_count());
    x.setFeed_type(f.getFeed_type());
    x.setObj_id(f.getObj_id());
    x.setImage(f.getImage());
    x.setUser_name(f.getUser_name());
    x.setUser_earthmile_points(f.getUser_earthmile_points());
    x.setLiked(f.isLiked());
    x.setCommented(f.isCommented());
    x.set_private(f.isIs_private());
    x.setUrl(f.getUrl());
    x.setFeed_creator_id(f.getFeed_creator_id());

    return x;
}

我的Feed类是:

public class Feed {

    int id;
    String text;
    Date time_created;
    Date time_modified;
    int comments_count;
    int likes_count;
    String feed_type;
    int obj_id;
    String image;
    String user_name;
    String user_earthmile_points;
    boolean liked;
    boolean commented;
    boolean is_private;
    String url;
    int feed_creator_id;

    public Feed() {}        // required for being Parcelable
}

FeedDBTableRow类是:

public class FeedDBTableRow extends RealmObject{ // having this necessity to extend RealmObject is the source of all problem, but I have to do this, hence two classes with similar composition
    private int id;
    private String text;
    private Date time_created;
    private Date time_modified;
    private int comments_count;
    private int likes_count;
    private String feed_type;
    private int obj_id;
    private String image;
    private String user_name;
    private String user_earthmile_points;
    private boolean liked;
    private boolean commented;
    private boolean is_private;
    private String url;
    private int feed_creator_id;
}

1 个答案:

答案 0 :(得分:1)

看看Apache BeanUtils:http://commons.apache.org/proper/commons-beanutils/javadocs/v1.9.2/apidocs/index.html 特别是,BeanUtils.copyProperties()可能是您觉得有用的东西。