Ich habe eine Java AutoValue-Klasse mit einem List-Attribut. Ich möchte zulassen, dass der Builder an die Liste anfügt, anstatt die gesamte erstellte Liste zu übergeben.Ist es möglich, einer Sammlung in Java AutoValue einen Wert hinzuzufügen?
Beispiel:
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?
}
}
}
Was ist die beste Lösung, um die addCard Funktion für das Schreiben? Unterstützt AutoValue das irgendwie schon? Die Eigenschaft intermediate cards in der konstruierten Klasse ist für den Builder nicht sichtbar, sodass ich nicht direkt darauf zugreifen kann. Ich könnte versuchen, den Builder direkt zu umgehen, indem ich meine eigene Kopie der Karten im Builder aufbewahre, ist das die einzige Option hier?
Gibt es Pläne für die gleiche Funktionalität nicht nur für com.google.common.collect Builder, aber für jeden Builder? Ich würde gerne die gleiche Funktionalität für meine generierten Builder verwenden! – oae