Java的属性:.propertyNames()和.stringPropertyNames()之间的区别?

时间:2013-06-18 16:20:39

标签: java

我一遍又一遍地阅读the javadoc of this class,但仍然无法弄清楚差异。

除了明显区别.propertyNames()返回Enumeration.stringPropertyNames()返回Set,据我所知,两种方法都返回相同的内容。至少我的想法是这样说的。

这些方法返回的内容之间的结果是否会有所不同?我看到的唯一可能性是,使用Enumeration的第二种方法可能会返回不同的结果,如果实例已被修改,因为Properties实现了完全同步的Hashtable。但除此之外呢?

1 个答案:

答案 0 :(得分:4)

  

这些方法返回的内容之间的结果是否会有所不同?

绝对。来自文档:

  

省略键或值不属于String类型的属性。

Properties 延伸 Hashtable,这是一个愚蠢的决定 - 但这意味着你可以写:

Properties p = new Properties();
p.put(new Object(), "Wow, a non-string key");
p.put("fred", new StringBuilder("Non-string value"));

stringPropertyNames()方法不会返回其中任何一个,但会propertyNames()