Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java属性是否被有效地弃用了?_Java_Properties_Deprecated - Fatal编程技术网

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

Java属性是否被有效地弃用了?,java,properties,deprecated,Java,Properties,Deprecated,Java的对象自Java 5之前的版本以来没有太大变化,它也没有泛型支持,也没有非常有用的助手方法(例如,定义的模式用于插入类以处理属性或帮助加载目录中的所有属性文件) 房地产开发停止了吗?如果是这样,目前保存/加载此类属性的最佳做法是什么 还是我完全错过了什么?字典结构是大多数编程语言中最古老、最常用的结构之一,我怀疑它是否会被弃用 即使被删除,很快就会有新的核心之外的实现 已经有了外部扩展,apache commons是我认为多年来帮助形成java的巨大资源,请参见。对于简单的配置需求,它仍

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

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


还是我完全错过了什么?

字典结构是大多数编程语言中最古老、最常用的结构之一,我怀疑它是否会被弃用

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


已经有了外部扩展,apache commons是我认为多年来帮助形成java的巨大资源,请参见。

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

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

此外,自Java 5之前的版本以来,它也发生了轻微的变化,正如所说的那样,它扩展了
哈希表
,并实现了
映射

“它没有泛型支持。” 为什么它需要泛型支持;它处理字符串键和字符串值
我不认为java属性被贬低了。这是一个成熟的图书馆,仅此而已,很多关于财产的概念都是非常古老和值得怀疑的。它的国际化非常差,它添加了一些方法,这些方法今天只能通过泛型类型来实现,它扩展了Hashtable,而Hashtable本身通常已不再使用,因为它的同步价值有限,并且它的方法与1.2中引入的Collections类不协调,许多添加到Properties类的方法本质上提供了一种类型安全性,被泛型所取代

如果今天实现,它可能是
映射的一个特殊实现
,并且肯定支持在属性文件中进行更好的编码


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

有关为什么
Hashtable
而不是
Hashtable
的解释,请参阅:它实际上处理对象键和对象值-限制为字符串键和字符串值,您需要泛型。该类提供字符串键和字符串值便利函数。@brabster和@dbrown0708由于设计不当,基于对象的API渗透到属性中。Person构建它时忽略了:“偏好组合而非继承”,尽管意图不同(如javadoc中所述:“Properties类代表一组持久的属性。属性可以保存到流中,也可以从流中加载。属性列表中的每个键及其对应值都是一个字符串。”)集合映射接口和实现者似乎是Java针对关联数组的正式解决方案—IMHO属性更方便,那么Java.util.Dictionary呢?它已经更新为使用泛型,但它也被记录为“过时”。但是,它仍然没有标记为@deprecated。我想弃用是一个难题。@omerkudat,字典基本上是1.2版集合之前的地图。虽然未正式弃用,但它与Vector属于同一组。这通常是不可取的。对于国际化,您通常会使用ResourceBundle API。Check和@BalusC我猜Yishai将属性文件编码的怪癖称为“糟糕的国际化”,默认情况下ResourceBundle使用相同的编码。