Construire un objet à partir d'un existant à l'aide de lombok
Permet de dire que j'ai un lombok annoté de la classe comme
@Builder
class Band {
String name;
String type;
}
Je sais que je peux faire:
Band rollingStones = Band.builder().name("Rolling Stones").type("Rock Band").build();
Est-il un moyen facile de créer un objet de Foo à l'aide de l'objet existant comme modèle et en changeant l'une de ses propriétés?
Quelque chose comme:
Band nirvana = Band.builder(rollingStones).name("Nirvana");
Je ne peux pas le trouver dans la lombok documentation.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le
toBuilder
paramètre à donner votre cas, untoBuilder()
méthode.De la documentation:
Disclaimer: je suis un lombok développeur.
@Wither
, qui est plus efficace pour le seul domaine des changements:Foo f1 = f0.withX(42)
.@Wither
génère avec* les méthodes qui renvoie toujours à un nouvel objet, au lieu de définir le champ de l'objet existant. C'est de peu d'efficacité.@Wither
est le meilleur. Pour plus de deux,toBuilder
gagne. Voir ma réponse ci-dessous.Si vous voulez vraiment changer une seule propriété, alors il y a de plus agréable et plus efficace:
Garrot crée pas de déchets, mais il peut changer un seul champ. Pour changer de nombreux domaines, vous pouvez utiliser
et de produire des tonnes de déchets (tous les résultats intermédiaires), mais que
toBuilder
est plus efficace et plus naturelle.n-1
objets pour une série den
appels àwithSomething
. Un objet coûte quelque chose comme quelques octets plus 4 ou 8 octets par référence majoré de 1 à 8 octets par primitive. Donc, nous parlons de dizaines d'octets par appel. No big deal, généralement.