2017-02-23 7 views
0
IBaseA <--- Interface 
CBaseB <--- Concrete base class 

ChildA implements IBaseA{ 
    //fields and getters, setters 
} 

ChildB extends CBaseB, implements IBaseA{ 
    //fields and getters, setters 
} 

TestClass implements RealmModel{ 
    private IBaseA child_obj; 
} 

Die Absicht zur Herstellung von Testclass auf diese Weise in der Lage war, alle Childa oder ChildB Objekte TestClass.child_obj zuweisen, und noch in der Lage sein Childa und ChildB implementieren andere Schnittstellen zu lassen, wie erforderlich.Polymorphe Beziehungen in Reich

Dies verursacht jedoch eine Kompilierung-Ausnahme

Error:(12, 8) error: Type 'in.avanti_app.student_companion.realmClasses.TestClass' of field 'child_obj' is not supported 

Wie wir die obige Absicht erreichen können?

Antwort

0

Polymorphie und Vererbung werden von Realm nicht unterstützt. Sie können dieses Problem für Updates folgen: https://github.com/realm/realm-java/issues/761

Generell empfehlen wir Zusammensetzung statt: https://en.wikipedia.org/wiki/Composition_over_inheritance, aber in Ihrer Situation, die wahrscheinlich nicht ideal, da es in etwa so aussehen würde:

public class IBaseA extends RealmObject { ChildA childA; ChildB childB; }

+0

jetzt ich ein trauriger Panda bin :( –