我有一个带有 List 属性的 Java AutoValue 类。我想让构建器附加到列表中,而不必传递整个构造的列表。
例子:
import com.google.auto.value.AutoValue;
@AutoValue
public abstract class Deck {
public abstract List<Card> cards();
public static Builder builder() {
return new AutoValue_Card.Builder()
.cards(new ArrayList<Card>());
}
@AutoValue.Builder
public abstract static class Builder {
public abstract Builder cards(List<Card> cards);
/**
* Append card to cards in the constructed Deck.
*/
public Builder addCard(Card card) {
// Is it possible to write this function?
}
}
}
编写 addCard 函数的最佳解决方案是什么?AutoValue 是否已经以某种方式支持这一点?构建类中的中间卡属性对 Builder 不可见,因此我无法直接访问它。我可以尝试通过将自己的卡片副本保留在 Builder 中来直接绕过 Builder,这是唯一的选择吗?