2016-11-27 6 views
0

У меня есть вопрос, чтобы создать сложные RealmObject: Он идет: Кодкомплекс RealmObject: RealmObject с другим RealmObject внутри

class User extends RealmObject{ 
public String name; 
public Position position; 
} 

class Position extends RealmObject{ 
public double lat; 
public double lon; 
} 

Создания:

User user = realm.createObject(User.class); 
user.name = "xcv"; 
Position position = realm.createObject(Position.class); 
position.lat = message.sourceCoords.lat; 
position.lon = message.sourceCoords.lon; 

user.position = position; 

Результата это крах следующим образом:

java.lang.StackOverflowError: stack size 1036KB 
                      at com.google.gson.internal.$Gson$Types$WildcardTypeImpl.<init>($Gson$Types.java:539) 
                      at com.google.gson.internal.$Gson$Types.canonicalize($Gson$Types.java:111) 
                      at com.google.gson.internal.$Gson$Types$WildcardTypeImpl.<init>($Gson$Types.java:553) 
                      at com.google.gson.internal.$Gson$Types.canonicalize($Gson$Types.java:111) 
                      at com.google.gson.internal.$Gson$Types$WildcardTypeImpl.<init>($Gson$Types.java:546) 

Что я делаю неправильно?

+1

Возможный дубликат [Создание GSON & Realm играть хорошо] (http://stackoverflow.com/questions/26260214/making-gson-realm-play- хороший) – EpicPandaForce

ответ

1

Вы должны создать свой экземпляр GSON как этот

Gson gson = new GsonBuilder() 
.setExclusionStrategies(new ExclusionStrategy() { 
    @Override 
    public boolean shouldSkipField(FieldAttributes f) { 
     return f.getDeclaringClass().equals(RealmObject.class); 
    } 

    @Override 
    public boolean shouldSkipClass(Class<?> clazz) { 
     return false; 
    } 
}) 
.create(); 
Смежные вопросы