在新类名

时间:2017-02-17 01:50:29

标签: java android realm realm-java

我有一个班级Message.java

public class Message extends RealmObject implements Serializable {

    @PrimaryKey
    @SerializedName("id")
    @Expose
    private Integer id;

    @SerializedName("user_id")
    @Expose
    private User user;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

}

但是,在Realm中保存Message个对象时,我想将它们保存在不同的类名NotificationMessage下(它应该具有与Message类相同的所有属性和方法),如:

public class NotificationMessage extends Message {

}

但这似乎不起作用。如何在不复制和粘贴NotificationMessage类的所有属性和方法的情况下创建Message类?

1 个答案:

答案 0 :(得分:1)

您似乎遇到了这个问题 https://github.com/realm/realm-java/issues/761

目前,Realm并不支持这种继承,但该线程中的某些人所使用的是使用一个接口,该接口包含您的类通用的所有方法。

在您的特定情况下,您必须将NotificationMessage转换为接口以保存Message的方法,然后使Message实现NotificationMessage

public interface NotificationMessage {


    public Integer getId() ;

    public void setId(Integer id) ;

    public User getUser() ;

    public void setUser(User user) ;

}



public class Message extends RealmObject implements Serializable, NotificationMessage {

    @PrimaryKey
    @SerializedName("id")
    @Expose
    private Integer id;

    @SerializedName("user_id")
    @Expose
    private User user;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

}