我正在使用Retrofit与一个基于REST的服务进行通信,在我的Android应用程序中,我有一个本地域模型。为了将我的应用程序与REST服务上的任何更改和依赖项隔离开来,我希望将从REST服务返回的对象转换为我的本地域模型。
目前,我通过将response.body()返回的对象传递给模型中相应类的构造函数来实现这一点。这对于所有的基本属性都很有效,除了像List<>这样的更复杂的对象。下面是我的类:
public abstract class MetadataAsset<T> implements Comparable<T> {
protected Long id;
protected String title;
protected String description;
protected List<String> genres;
protected List<CastMember> cast;
public MetadataAsset(no.external.entities.MetadataAsset metadataAsset) {
this.id = metadataAsset.id;
this.title = metadataAsset.title;
this.description = metadataAsset.description;
this.genres = metadataAsset.genres;
this.cast = new ArrayList<>();
if(metadataAsset.cast != null) {
for (no.external.entities.CastMember castMember : metadataAsset.cast) {
this.cast.add(new CastMember(castMember));
}
}
}
public Long getId() {
return id;
}
public String getTitle() {
return title;
}
public String getDescription() {
return description;
}
public List<String> getGenres() {
return genres;
}
public List<CastMember> getCast() {
return cast;
}
}传递给构造函数的对象是Retrofit的response.body()返回的对象。在将此对象传递给MetadataAsset构造函数之前,我检查了强制转换列表的大小不为空,列表中的元素数量>0,并且获得了正确的元素数量,但是当我在构造函数中执行相同的测试时,列表现在为空。
看看流派列表,结果就不一样了。无论是在将对象传递给构造函数之前还是在构造函数内部,该列表都具有相同数量的元素。
这里是不是有什么我不明白的GC?当列表不在构造函数的外部时,为什么它在构造函数内是空的?
这应该是如何构建的?
https://stackoverflow.com/questions/47658540
复制相似问题