GSON nie deserializuje odwołania do klasy zewnętrznej
W mojej aplikacji Java zdefiniowałem dwie klasy, zwaneA
iB
gdzieB
jest klasą wewnętrznąA
. Oba są definiowane jako możliwe do serializacji
public class A implements Serializable {
int attrParent;
List<B> items = new ArrayList<B>();
public void setAttrParent(int attrParent) {
this.attrParent = attrParent;
}
public int getAttrParent() {
return attrParent;
}
public class B implements Serializable {
private int attr;
public void setAttr(int attr) {
this.attr = attr;
}
public int getAttr() {
return attr;
}
public int getSomeCalculationValue() {
return this.attr * A.this.attrParent; // Problems occurs here
}
}
}
Przed serializując ten obiekt za pomocą GSON,getSomeCalculationValue
działa w porządku. Ale,po serializowanie i deserializowanie,getSomeCalculationValue
kończy się niepowodzeniemNullPointerException
.
Dzieje się tak, ponieważ klasa wewnętrznaB
nie ma odniesienia do klasy zewnętrznejA
już, więc,A.this
zawodzi.
Czy ktoś wie, jak mogę rozwiązać ten problem, czyli przywrócić wewnętrzne do zewnętrznego odniesienia podczas deserializacji tego obiektu?