代码之家  ›  专栏  ›  技术社区  ›  brabster

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

  •  23
  • brabster  · 技术社区  · 14 年前

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

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

    还是我完全错过了什么?

    5 回复  |  直到 14 年前
        1
  •  11
  •   Yishai    14 年前

    很多关于财产的概念都是非常古老和值得怀疑的。它的国际化非常差,它添加了一些方法,这些方法今天只能通过泛型类型来实现,它扩展了Hashtable,而Hashtable本身通常已不再使用,因为它的同步价值有限,并且它的方法与1.2中引入的Collections类不协调,许多添加到Properties类的方法本质上提供了一种类型安全性,被泛型所取代。

    如果今天实施的话,这可能是一个特殊的 Map<String, String> ,并且在属性文件中支持更好的编码。

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

        2
  •  7
  •   nicerobot    14 年前

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

        3
  •  3
  •   dbrown0708    14 年前

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

    而且,自Java5之前的版本以来,它也发生了轻微的变化 Javadoc 他说这会延伸 Hashtable<Object, Object> 和工具 Map<Object, Object> .

        4
  •  3
  •   ring bearer    14 年前

    “它没有泛型支持,” 为什么它需要泛型支持;它处理字符串键和字符串值

        5
  •  1
  •   crowne    14 年前

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

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

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