当前位置: 代码迷 >> java >> 如何在java中使用默认值构造属性列表?
  详细解决方案

如何在java中使用默认值构造属性列表?

热度:58   发布时间:2023-08-02 10:20:53.0

这段代码:

import java.util.Properties;
public class P {
    public static void main(String[] args) {
        Properties defaultProperties=new Properties();
        defaultProperties.put("a",1);
        System.out.println("default: "+defaultProperties);
        Properties properties=new Properties(defaultProperties);
        System.out.println("other: "+properties);
    }
}

打印:

default: {a=1}
other: {}

在eclipse luna中使用java 8。

如何使用默认值构建属性列表?

您正在使用defaultProperties.put()而不是defaultProperties.setProperty() 因此,您的“a”不被视为财产。

所以改用:

defaultProperties.setProperty("a", "1");

properties对象仍将打印为空(这是new Properties(Properties defaults)构造函数 !)但是如果使用:

System.out.println(properties.getProperty("a"));

你会看到你得到“1”。

您的代码有两个问题。

  1. 使用get()put()时,默认属性不起作用。

你需要做setProperty()和'getProperty()`。

  1. 打印属性文件时,它不包含默认属性。 toString()方法并不那么复杂。

请改用:

Properties defaultProperties=new Properties();
defaultProperties.setProperty("a","s");
System.out.println("default: "+defaultProperties);
Properties properties=new Properties(defaultProperties);
System.out.println("other: "+properties.getProperty("a"));

您可以使用put()方法,但使用String作为值:

properties.put("a","1");

我知道签名是: Object java.util.Hashtable.put(Object key, Object value)

但随着

public String getProperty(String key) {
    Object oval = super.get(key);
    String sval = (oval instanceof String) ? (String)oval : null;
    return ((sval == null) && (defaults != null)) ? defaults.getProperty(key) : sval;
}

如果该值不是String类型,则此函数返回null。

结束:

Properties properties = new Properties();
properties.put("a" , "1");
System.out.println("default: "+properties);
Properties properties2 = new Properties( properties );
System.out.println("other: "+ properties2.getProperty( "a"  ) );