问题描述
这段代码:
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。
如何使用默认值构建属性列表?
1楼
您正在使用defaultProperties.put()而不是defaultProperties.setProperty() 。
因此,您的“a”不被视为财产。
所以改用:
defaultProperties.setProperty("a", "1");
properties对象仍将打印为空(这是new Properties(Properties defaults)构造函数 !)但是如果使用:
System.out.println(properties.getProperty("a"));
你会看到你得到“1”。
2楼
您的代码有两个问题。
-
使用
get()和put()时,默认属性不起作用。
你需要做setProperty()和'getProperty()`。
-
打印属性文件时,它不包含默认属性。
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"));
3楼
您可以使用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" ) );