Java属性是否被有效地弃用?
自从Java 5之前,Java的Properties对象没有多少变化,它没有得到泛型支持,或者非常有用的帮助方法(定义模式插入类来处理属性或帮助加载目录中的所有属性文件,例)。
属性的开发停止了吗? 如果是这样,那么这种属性保存/加载的最佳做法是什么?
或者我完全错过了什么?
围绕Properties的许多概念绝对是古老且值得怀疑的。 它具有非常差的国际化程度,它增加了今天只能通过Generic类型完成的方法,它扩展了Hashtable,它本身通常不被使用,因为它的同步是有限的价值,它的方法与1.2中引入的集合类以及添加到Properties类的许多方法基本上提供了被泛型替代的那种类型安全性。
如果今天实现它,它可能是一个Map<String, String>
的特殊实现,并且肯定支持属性文件中更好的编码。
这就是说,没有真正的替代品不会增加复杂性。 确保java.util.prefs.Preferences api是“新的和改进的”,但它增加了一层复杂性,远远超出了许多用例所需的范围。 仅仅使用XML也是一个选项(至少可以解决国际化问题),但是一个属性对象通常可以很好地满足需求,在这一点上使用它。
对于简单的配置要求,它仍然是一个可行的解决方案。 它们不需要泛型支持,因为属性键和值本质上是字符串,也就是说,它们存储在扁平的ascii文件中。 如果您需要取消/封送/序列化对象,则属性不是正确的方法。 现在首选的方法是java.util.prefs.Preferences,用于任何超出中等复杂配置需求的情况。
它做它需要做的事情。 编写支持读取目录中的所有属性文件并不难。 我会说这不是一个常见的用例,所以我不认为这是JDK中需要的东西。
此外,自从Java 5之前,它已经发生了轻微的变化,因为Javadoc说扩展了Hashtable<Object, Object>
并实现了Map<Object, Object>
。