gpt4 book ai didi

android - auto-value-parcel-adapter 能否应对另一个自动值类的 Typed Set?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:58:51 24 4
gpt4 key购买 nike

我正在研究 auto-value 及其扩展,即 auto-value-parcelauto-value-parcel-adapter安卓应用。

我有这些模型类:-

@AutoValue
public abstract class Xenarchaeota implements Parcelable {

@ParcelAdapter(AmoebaTypeAdapter.class)
public abstract Set<Amoeba> amoebas();

public static Builder builder() {
return new AutoValue_Xenarchaeota.Builder();
}

@AutoValue.Builder
public abstract static class Builder {

public abstract Builder setAmoebas(Set<Amoeba> value);

public abstract Xenarchaeota build();
}
}

@AutoValue
public abstract class Amoeba implements Parcelable {

public abstract String surname();

public static Builder builder() {
return new AutoValue_Amoeba.Builder();
}

@AutoValue.Builder
public abstract static class Builder {

public abstract Builder surname(final String value);

public abstract Amoeba build();
}

}

我的类型适配器是我的问题所在

class AmoebaTypeAdapter implements TypeAdapter<Set<Amoeba>> {

@Override
public Set<Amoeba> fromParcel(Parcel in) {
final ArrayList<Amoeba> arrayList = new ArrayList<>();
in.readTypedList(arrayList, Amoeba.CREATOR); // How to access the CREATOR?
return new TreeSet<>(arrayList);
}

@Override
public void toParcel(Set<Amoeba> value, Parcel dest) {
final ArrayList<Amoeba> arrayList = new ArrayList<>(value);
dest.writeTypedList(arrayList);
}
}

我需要传递给 readTypedArray 的 CREATOR 在 AutoValue_Amoeba 中声明。

我的错误在哪里?对auto-value-parcel的误解?

最佳答案

AutoValue:Parcel 扩展无法处理集合,但如果您将该属性转换为 List,则无需自定义适配器即可开箱即用。如果你想把它当作一个 Set 你可以这样做。请记住,您可能还想缓存 Set

@AutoValue
public abstract class Xenarchaeota implements Parcelable {

abstract List<Amoeba> amoebaList();
public Set<Amoeba> amoebas() {
return new TreeSet(amoebaList());
}

public static Builder builder() {
return new AutoValue_Xenarchaeota.Builder();
}

@AutoValue.Builder
public abstract static class Builder {

public abstract Builder setAmoebas(Set<Amoeba> value);

public abstract Xenarchaeota build();
}
}

关于android - auto-value-parcel-adapter 能否应对另一个自动值类的 Typed Set?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48344965/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com