Java Properties是否已被有效弃用?

自Java 5之前Java的Properties对象没有太大变化,它没有Generics支持,或者没有非常有用的辅助方法(定义模式来插入类来处理属性或帮助加载目录中的所有属性文件,for例)。

物业发展停止了吗? 如果是这样,目前保存/加载这种属性的最佳实践是什么?

还是我完全错过了什么?

围绕属性的许多概念肯定是古老而有问题的。 它具有非常差的国际化,它增加了今天只能通过Generic类型实现的方法,它扩展了Hashtable,它本身通常是不可用的,因为它的同步价值有限,而且它的方法与它不一致。 1.2中引入的集合类,添加到Properties类的许多方法实质上提供了由generics替换的类型安全性。

如果今天实现它可能是Map的特殊实现,并且当然支持在属性文件中更好的编码。

话虽这么说,但并没有真正的替代品不会增加复杂性。 当然java.util.prefs.Preferences api是“新的和改进的”,但它增加了一层复杂性,远远超出了许多用例所需的复杂性。 仅使用XML也是一种选择(至少可以解决国际化问题),但是属性对象通常可以很好地满足需求,此时使用它。

它仍然是简单配置要求的可行解决方案。 它们不需要generics支持,因为属性键和值本质上是字符串,也就是说,它们存储在平坦的ascii文件中。 如果需要取消/编组/序列化对象,则属性不是正确的方法。 现在首选的方法是java.util.prefs.Preferences,以满足任何超出中等复杂配置需求的需求。

它做了它需要做的事情。 编写对目录中所有属性文件的读取支持并不困难。 我会说这不是一个常见的用例,所以我不认为这是需要在JDK中的东西。

此外,它自Java 5之前就略有变化,因为Javadoc说它扩展了Hashtable并实现了Map

“它没有得到generics支持,”为什么它需要generics支持; 它处理字符串键和字符串值我不会考虑Java属性已弃用。 这是一个成熟的图书馆 – 就是这样

字典结构是大多数编程语言中最古老最常用的结构之一http://en.wikipedia.org/wiki/Associative_array ,我怀疑它会被弃用。

即使被删除,很快就会有核心之外的新实现。

已经有外部扩展,apache commons是我认为多年来帮助塑造java的很好的资源,请参阅http://commons.apache.org/configuration/howto_properties.html 。