为什么 java.util.Properties 扩展 Hashtable<Object, Object> 而不是 Hashtable<String, String>?
Why does java.util.Properties extend Hashtable<Object, Object> instead of Hashtable<String, String>?
如标题所述:我想找到为什么 java.util.Properties
扩展 Hashtable<Object, Object>
而不是 Hashtable<String, String>
的问题的答案?
class Properties extends Hashtable<Object,Object> { ... }
我想知道,因为方法 setProperty(String key, String value)
只接受字符串值,并且属性基于字符串 key-value 表示。完整的方法 body 在上面的 link 和这里:
public synchronized Object setProperty(String key, String value) {
return put(key, value);
}
getProperty(String key)
方法和其他方法也是如此。
扩展 Hashtable<Object, Object>
并使用字符串有什么具体原因吗?像这样使用 Hastable<Object, Object>
或 HashMap<Object, Object>
时,我应该注意什么 use-case 吗?
原因之一:class早于仿制药。
Since:
JDK1.0
更新 Java 泛型库的团队必须在“现在我们可以准确捕获语义”和“人们会有很多错误代码”之间取得平衡。大多数时候,这些库被更新为使用现有代码进行编译和 运行,但在特定方面需要付出一定的代价。
如标题所述:我想找到为什么 java.util.Properties
扩展 Hashtable<Object, Object>
而不是 Hashtable<String, String>
的问题的答案?
class Properties extends Hashtable<Object,Object> { ... }
我想知道,因为方法 setProperty(String key, String value)
只接受字符串值,并且属性基于字符串 key-value 表示。完整的方法 body 在上面的 link 和这里:
public synchronized Object setProperty(String key, String value) {
return put(key, value);
}
getProperty(String key)
方法和其他方法也是如此。
扩展 Hashtable<Object, Object>
并使用字符串有什么具体原因吗?像这样使用 Hastable<Object, Object>
或 HashMap<Object, Object>
时,我应该注意什么 use-case 吗?
原因之一:class早于仿制药。
Since:
JDK1.0
更新 Java 泛型库的团队必须在“现在我们可以准确捕获语义”和“人们会有很多错误代码”之间取得平衡。大多数时候,这些库被更新为使用现有代码进行编译和 运行,但在特定方面需要付出一定的代价。