2016-04-27 4 views
1

'B'または 'C'以上のタイプのリストを持つモデル 'A'があります。 多形性がレルムでサポートされていないことを知っています。私はちょうどRealmList<RealmObject>またはRealmList<? extends RealmObject>を実行しません。ベストプラクティスと、異なるタイプのオブジェクトをサポートする必要があるRealmListの実装方法

Realmでこの動作を実装する方法を理解できません。

答えて

1

多型のサポートはここに追跡さ:https://github.com/realm/realm-java/issues/761、しかし限り、それが実装されていないとして、あなたの代わりに(https://en.wikipedia.org/wiki/Composition_over_inheritanceを)の組成を使用する必要が

あなたのケースでは、このようなものになります。

public interface MyContract { 
    int calculate(); 
} 

public class MySuperClass extends RealmObject implements MyContract { 
    private A a; 
    private B b; 
    private C c; 

    @Override 
    public int calculate() { 
    return getObj().calculate(); 
    } 

    private MyContract getObj() { 
    if (a != null) return a; 
    if (b != null) return b; 
    if (c != null) return c; 
    } 

    public boolean isA() { return a != null; } 
    public boolean isB() { return b != null; } 
    public boolean isC() { return c != null; } 

    // ... 
} 
関連する問題