2016-11-27 22 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&領域發揮好]的可能的複製(http://stackoverflow.com/questions/26260214/making-gson-realm-play-創建GSON實例尼斯) – EpicPandaForce

回答

1

你應該這樣

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();