为什么我的属性对象在我执行get时会忽略默认值?

coo*_*tah 1 java

Properties defaults = new Properties();
defaults.put("color", "black");

Properties props = new Properties(defaults);

// This prints "null, black"
System.out.println(props.get("color") + ", " + props.getProperty(color));
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 5

Java做出了Properties 子类 的不幸决定,Hashtable而不仅仅是包含一个Hashtable.

getProperty方法使用默认支持Properties,但get继承自的方法Hashtable不使用.所以,如果你写:

System.out.println(props.getProperty("color"));
Run Code Online (Sandbox Code Playgroud)

它会像你期望的那样打印出"黑色".