我试图java.util.Properties
在我的类中有一个默认对象,它具有可接受的默认属性,并让开发人员通过指定另一个java.util.Properties
对象来覆盖其中的一些默认属性,但是我找不到一种很好的方法来做到这一点。
预期的用法如下:
Properties defaultProperties = new Properties();
defaultProperties.put("key1", "value1");
defaultProperties.put("key2", "value2");
Properties otherProperties = new Properties();
otherProperties.put("key2", "value3");
Properties finalProperties = new Properties(defaultProperties);
//
// I'd expect to have something like:
//
// finalProperties.merge(otherProperties);
//
java.util.Properties
实现该java.util.Map
接口,因此您 可以
按原样对待它,并使用诸如putAll
添加another的内容之类的方法Map
。
但是,如果您将其视为地图,则需要非常小心:
new Properties(defaultProperties);
因为它 看起来 像一个复制构造函数,但事实并非如此,这常常使人们感到 困惑
。如果使用该构造函数,然后调用类似的东西keySet()
(从其Hashtable
超类继承),则将得到一个空集,因为的Map
方法Properties
未考虑Properties
传递给构造函数的默认对象。仅当您使用Properties
本身定义的方法(例如getProperty
和)时propertyNames
,才能识别默认值。
因此,如果您需要合并两个Properties对象,则这样做更安全:
Properties merged = new Properties();
merged.putAll(properties1);
merged.putAll(properties2);
这将为您提供更可预测的结果,而不是随意将其中之一标记为“默认”属性集。
通常,我建议您不要将其Properties
视为Map
,因为(在我看来)这是Java早期的实现错误(属性应该包含一个Hashtable
,而不是对其进行扩展-
这是惰性设计),但是在Properties
本身并没有给我们很多选择。
问题内容: 我有以下输入-2个json文件,一个是基础文件,第二个包含相同的属性,但值不同,我想合并这些对象。 例如: 第二个文件: 结果应该是这样的: 使用powershell可以做到吗? 问题答案: (请参见下面的更新) 结果: 您可能会考虑不覆盖左值: 在这种情况下,结果将是: 更新2019年11月16日 的参数已经被耗尽,分过和参数(遗憾的重大更改)。好消息是,对象合并的默认参数设置包含在
问题内容: 我有第一个json: 第二个: 我想合并/合并两个数据数组,例如: (我现在不在乎)。 如何快速简便地做到这一点?这是我的尝试: 但是会引发异常: 问题答案: JArray dataOfJson1=json1.SelectToken(“data”);
问题内容: 尝试查看是否有任何JavaScript库功能可以合并两个json对象的特定键的值 使用$ .extend和$ .merge给出以下结果 我正在寻找的是 问题答案: 您想深入扩展
问题内容: 如何合并结构相同的两个MySQL表? 这两个表的主键将发生冲突,因此我考虑了这一点。 问题答案: 您也可以尝试: 这允许table_1中的行取代table_2中具有匹配主键的行,同时仍插入具有新主键的行。 或者, 将使用来自表_2的相应行更新表_1中已经存在的行,同时插入具有新主键的行。
问题内容: 我需要能够在运行时合并两个(非常简单的)JavaScript对象。例如,我想: 有没有人为此提供脚本或知道内置的方式来执行此操作?我不需要递归,也不需要合并函数,只需合并平面对象上的方法即可。 问题答案: ECMAScript 2018标准方法 您将使用对象传播: 现在是和的并集。中的属性将覆盖中的属性。 这也是此语法的MDN文档。如果您正在使用babel,则需要babel-plugi
我有两个xml文件,需要将它们合并为一个xml。以下是示例: orginal.xml文件: 使现代化xml文件: 它们应合并为如下xml文件: 实际上,我想使用更新。xml来更新原始。xml: > update.xml中的新员工应该被添加到original.xml 在更新中修改了员工信息。xml应覆盖相应的员工节点。 我对XSLT略知一二,但我的知识还不足以找出适合合并的XSLT。