Java Properties是否已被有效弃用?

时间:2010-03-01 19:59:27

标签: java properties deprecated

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

属性的开发是否已停止?如果是这样,目前保存/加载此类属性的最佳做法是什么?

或者我完全错过了什么?

5 个答案:

答案 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