2017-02-23 55 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; 
} 

Намерение для создания TestClass таким образом, должен был быть в состоянии назначить любой из childâ или ChildB объектов TestClass.child_obj, и все еще быть в состоянии позволить childâ и ChildB реализовать другие интерфейсы, как требуется.Полиморфные отношения в сфере

Однако, это приводит к тому времени компиляции исключение

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

Как мы можем достичь выше намерения?

ответ

0

Полиморфизм и наследование не поддерживаются Королевством. Вы можете следить за этим вопросом обновления: https://github.com/realm/realm-java/issues/761

Обычно мы рекомендуем Состав вместо: https://en.wikipedia.org/wiki/Composition_over_inheritance, но в вашей ситуации, что, вероятно, не является идеальным, так как это будет выглядеть примерно так:

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

+0

теперь я грустный панда :( –

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