java.util.Properties
implémente l' java.util.Map
interface, et vous pouvez juste le traiter comme tel, et l'utilisation de méthodes comme putAll
pour ajouter le contenu d'un autre Map
.
Toutefois, si vous le traitez comme une Carte, vous devez être très prudent avec ce:
new Properties(defaultProperties);
Cela se produit fréquemment, car il semble comme un constructeur de copie, mais il n'est pas. Si vous utilisez le constructeur, et ensuite appeler quelque chose comme keySet()
(hérité de son Hashtable
super-classe), vous obtiendrez un ensemble vide, parce que l' Map
méthodes Properties
ne tiennent pas compte de la valeur par défaut Properties
objet que vous avez passé dans le constructeur. Les valeurs par défaut ne sont comptabilisés que si vous utilisez les méthodes définies dans Properties
lui-même, comme getProperty
et propertyNames
,, entre autres.
Donc, si vous avez besoin de fusionner deux Propriétés des objets, il est plus sûr de le faire:
Properties merged = new Properties();
merged.putAll(properties1);
merged.putAll(properties2);
Cela vous donnera des résultats plus prévisibles, plutôt que de manière arbitraire l'étiquetage de l'un d'entre eux comme le "par défaut" jeu de propriétés.
Normalement, je vous recommande de ne pas traiter Properties
comme Map
, parce que c'était (à mon avis) une mise en œuvre erreur dès les premiers jours de Java (Propriétés doivent être Hashtable
, non étendu il - qui était paresseux design), mais la faiblesse de l'interface définie en Properties
lui-même ne nous donne pas beaucoup d'options.