Java Properties对象自Java 5之前没有太大变化,它没有Generics支持,或者非常有用的辅助方法(定义模式来插入类来处理属性或帮助加载所有例如,目录中的属性文件。
属性的开发是否已停止?如果是这样,目前保存/加载此类属性的最佳做法是什么?
或者我完全错过了什么?
答案 0 :(得分:11)
围绕属性的许多概念肯定是古老而有问题的。它具有非常差的国际化,它增加了今天只能通过Generic类型完成的方法,它扩展了Hashtable,它本身通常是不可用的,因为它的同步价值有限,而且它的方法与它不一致。 1.2中引入的集合类,添加到Properties类的许多方法实质上提供了由泛型替换的类型安全性。
如果今天实现它可能是Map<String, String>
的特殊实现,并且当然支持在属性文件中更好的编码。
话虽如此,但并没有真正的替代品不会增加复杂性。当然java.util.prefs.Preferences api是“新的和改进的”,但它增加了一层复杂性,远远超出许多用例所需的复杂性。仅使用XML也是一种选择(至少可以解决国际化问题),但是属性对象通常可以很好地满足需求,此时可以使用它。
答案 1 :(得分:7)
对于简单的配置要求,它仍然是一个可行的解决方案。它们不需要泛型支持,因为属性键和值本身就是字符串,也就是说,它们存储在平坦的ascii文件中。如果需要取消/封送/序列化对象,则属性不是正确的方法。现在,首选方法java.util.prefs.Preferences用于任何超出中等复杂配置需求的方法。
答案 2 :(得分:3)
它做了它需要做的事情。编写对目录中所有属性文件的读取支持并不困难。我会说这不是一个常见的用例,所以我不认为这是需要在JDK中的东西。
此外,自Java 5之前版本略有变化,因为Javadoc表示扩展Hashtable<Object, Object>
并实现Map<Object, Object>
。
答案 3 :(得分:3)
“它没有得到泛型支持,” 为什么需要泛型支持;它处理字符串键和字符串值 我不认为Java属性已被弃用。这是一个成熟的图书馆 - 全部
答案 4 :(得分:1)
字典结构是大多数编程语言http://en.wikipedia.org/wiki/Associative_array中最常用的结构之一,我怀疑它会被弃用。
即使被删除,很快就会有核心之外的新实现。
已有外部扩展,apache commons是我认为多年来帮助塑造java的优秀资源,请参阅http://commons.apache.org/configuration/howto_properties.html。