Le générateur généré le fait intentionnellement pour empêcher (effectivement détecter tôt) les fautes de frappe et de copier-coller accidentelles. En cela, il imite en fait le comportement de ImmutableMap.Builder
de Guava (qui est réellement utilisé en interne et est responsable de cette erreur). Pour résoudre votre problème, la meilleure façon de gérer cela est de créer votre propre carte de hachage, de la remplir avec des valeurs dans n'importe quel ordre et avec n'importe quel nombre d'entrées dupliquées/surchargées, puis d'utiliser builder.putAllBar(hashMap)
pour l'appliquer et la transformer en carte immuable pendant la création d'objets de valeur.
L'autre option est de ne pas utiliser Guava, le code généré utilisera alors le HashMap
et créera une copie défensive enveloppée dans Collection.unmodifiableMap
pour l'objet immuable. Utilisez @Value.Style(jdkOnly = true)
pour utiliser uniquement les collections fournies par JDK (en savoir plus sur les styles ici: http://immutables.github.io/style.html). En utilisant une carte de hachage régulière dans un générateur, vous éviterez d'avoir l'erreur de clé dupliquée.
Que voulez-vous accomplir? –
Je souhaite remplacer les anciennes valeurs par de nouvelles valeurs/ignorer les erreurs en double s'il s'agit de la même valeur. – lf215
Essayez d'utiliser le hashmap par défaut peut-être? Cela aide dans votre cas –