Depuis l' Collector
est en fait un conteneur pour les quatre fonctions et les caractéristiques des drapeaux, il n'y a pas de problème de le réutiliser, mais aussi rarement un avantage, comme l'impact d'un tel objet léger sur la gestion de la mémoire est négligeable, si pas complètement supprimées par l'optimiseur de toute façon.
La principale raison de ne pas réutiliser Collector
s, comme on le voit avec le groupe builtin Collectors
, est, que vous ne pouvez pas le faire dans un type de façon sécuritaire. Lorsqu'on propose un collecteur pour arbitrairement tapé List
s, vous aurez besoin décoché opérations à toujours le même Collector
de l'instance. Si vous stockez un Collector
correctement tapé variable au lieu de cela, pour être utilisé sans décoché des opérations, vous pouvez l'utiliser seulement pour un type d' List
s, de rester avec cet exemple.
Dans le cas d' Collections.emptyList()
, etc., le JRE développeurs a une façon différente, mais les constantes EMPTY_LIST
, EMPTY_MAP
, EMPTY_SET
existaient déjà avant l'introduction de médicaments Génériques, et je dirais qu'ils sont plus polyvalents que les quelques cachable Collectors
, qui sont seulement quatre cas particuliers de l'autre de plus de trente builtin collectionneurs, qui ne peuvent pas être mis en cache, en raison de leurs paramètres de la fonction. Depuis les paramètres de la fonction sont souvent mises en œuvre par les expressions lambda, qui génèrent des objets d'une quelconque identité/égalité, un cache de cartographie à collecteur cas aurait imprévisible de l'efficacité, mais très probablement beaucoup moins efficace que le gestionnaire de mémoire traitera de la des instances temporaires.