2017-02-17 1 views
0

У меня есть класс Message.java:Дублирование класса Realm под новым именем класса

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; 
    } 

} 

Однако при сохранении Message объектов в Realm, я хочу, чтобы сохранить их под другим именем класса, NotificationMessage (который должен иметь все одни и те же свойства и методы, как Message класса), как:

public class NotificationMessage extends Message { 

} 

Но это не похоже на работу. Как создать класс NotificationMessage без копирования и вставки всех свойств и методов класса Message?

+0

Можете ли вы включить код, который вы использовали для сохранения, и который не работает? – Doug

+0

На данный момент это невозможно. Существует проблема отслеживания этого: https://github.com/realm/realm-java/issues/1470 Если вы действительно этого хотите, вам нужно вручную разобрать json и сохранить в Realm. – beeender

ответ

1

кажется, что вы попали этот вопрос https://github.com/realm/realm-java/issues/761

В настоящее время Realm не поддерживает такого рода наследования, но то, что некоторые люди в этом потоке сделал, чтобы использовать интерфейс, который содержит все методы, которые являются общими к вашим классам.

В вашем конкретном случае вам необходимо преобразовать NotificationMessage в интерфейс для хранения методов сообщения, а затем сделать 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; 
    } 

} 
Смежные вопросы