我有这两个基类:
class BasePost {
private String id;
private String creator;
private BasePostMeta postMeta;
}
class BasePostMeta {
private String title;
private String content;
}
还有其他一些延伸它们:
class ProjectPost extends BasePost {
private ProjectPostMeta postMeta;
}
class ProjectPostMeta extends BasePostMeta {
private String startDate;
private String endDate;
}
如您所见,如果需要,我会隐藏postMeta
。
当我尝试使用GSON序列化时,我收到postMeta
的“多个字段”警告。我利用ExclusionStrategy查看了this answer,但它隐藏了子类字段,支持超类字段。
如何实现相反的方式?
答案 0 :(得分:0)
尝试使用泛型和类型参数。假设你的基类是:
public class AbstractPost<T> {
private T postMeta;
}
BasePost
可以更改为:
public class BasePost<BasePostMeta> {
private BasePostMeta postMeta;
}
和ProjectPost
:
public class ProjectPost<ProjectPostMeta> {
private ProjectPostMeta postMeta;
}
这样你只有一个名为postMeta
的字段,Gson应该能够找出它的类型。