为什么java.util.Properties扩展Hashtable <object,object =“”>而不是Hashtable <string,string =“”>?

时间:2018-05-19 13:33:28

标签: java generics properties hashtable

正如标题所述:我想找到为什么java.util.Properties延伸Hashtable<Object, Object>而不是Hashtable<String, String>的问题的答案?

class Properties extends Hashtable<Object,Object> { ... }

我想知道因为方法setProperty(String key, String value)只接受String值,而属性基于String键值表示。完整的方法体位于上面和此处的链接:

public synchronized Object setProperty(String key, String value) {
    return put(key, value);
}

getProperty(String key)方法和其他方法也是如此。

是否有任何具体原因延伸Hashtable<Object, Object>并使用字符串?在使用Hastable<Object, Object>HashMap<Object, Object>时,我是否应该注意这个用例?

1 个答案:

答案 0 :(得分:1)

这是一个原因:该课程早于泛型。

Since: JDK1.0

更新用于泛型的Java库的团队必须平衡“现在我们可以准确地捕获语义”和“人们会有很多破坏的代码”。大多数情况下,库已更新为使用现有代码进行编译和运行,但需要付出一定代价。