Java 属性是否有效地被弃用了?

2022-09-01 17:40:50

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

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

还是我完全错过了什么?


答案 1

围绕属性的许多概念绝对是古老且值得怀疑的。它具有非常差的国际化,它添加了今天只能通过泛型类型完成的方法,它扩展了Hashtable,它本身通常已不再使用,因为它的同步价值有限,并且它的方法与1.2中引入的Collumgers类不协调,并且添加到属性类的许多方法基本上提供了由泛型取代的类型安全性。

如果今天实现,它可能是 a 的特殊实现,并且肯定支持在属性文件中进行更好的编码。Map<String, String>

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


答案 2

对于简单的配置要求,它仍然是一个可行的解决方案。它们不需要泛型支持,因为属性键和值本质上是字符串,也就是说,它们存储在平面 ascii 文件中。如果需要取消/封送处理/序列化对象,则“属性”不是正确的方法。现在首选方法是java.util.prefs.Preferences,用于超出中等复杂配置需求之外的任何内容。