如何从java.util.properties获取默认值

qfe3c7zg  于 2021-07-07  发布在  Java
关注(0)|答案(1)|浏览(450)

Properties 对象包含一个键值对Map,另外还有一个“defaults” Properties 受保护的字段。
可以通过 keySet() 获取当前 Properties ,也可以通过 stringPropertyNames() 获取所有不同的键,包括“默认值”中的键 Properties .
我想写一个方法,给定 Properties 例如,返回这些“默认值”,包括键和值。
迭代 stringPropertyNames() 并跳过包含在 keySet() 这是不够的,因为“defaults”中的条目可能被当前 Properties . 通过反射访问受保护的“defaults”字段将显示警告输出,并且在将来的java版本中可能不起作用。

sqyvllje

sqyvllje1#

这个 Properties.clone() 方法将创建一个新的 Properties 对象,包括默认值。此克隆可以清空,剩下的是“默认值”:

public static Properties getDefaultProperties(final Properties properties) {
    // use a clone to not modify the supplied properties
    final Properties clone = (Properties) properties.clone();
    // since we cannot access the default properties, we simply remove all non-default
    clone.clear();
    // what remains are the default properties that we will copy
    final Properties defaultProperties = new Properties();
    for (final String property : clone.stringPropertyNames()) {
        defaultProperties.setProperty(property, clone.getProperty(property));
    }
    return defaultProperties;
}

相关问题