A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

泛型有那么多的好处,为什么Properties没有定义泛型
Properties是HashTable的子类,为什么Properties没有定义泛型呢?他不定义泛型的原因是什么?他的键值都是String类型的,为了什么这样呢?

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

2 个回复

倒序浏览
这种问题看JDK中的 Properties 类 的源代码就OK了:
...............
  public  class Properties extends Hashtable<Object,Object> {
.................
    /**
     * Calls the <tt>Hashtable</tt> method <code>put</code>. Provided for
     * parallelism with the <tt>getProperty</tt> method. Enforces use of
     * strings for property keys and values. The value returned is the
     * result of the <tt>Hashtable</tt> call to <code>put</code>.
     *
     * @param key the key to be placed into this property list.
     * @param value the value corresponding to <tt>key</tt>.
     * @return     the previous value of the specified key in this property
     *             list, or <code>null</code> if it did not have one.
     * @see #getProperty
     * @since    1.2
     */
    public synchronized Object setProperty(String key, String value) {
        return put(key, value);
    }
   ...................
   /**
     * Searches for the property with the specified key in this property list.
     * If the key is not found in this property list, the default property list,
     * and its defaults, recursively, are then checked. The method returns
     * <code>null</code> if the property is not found.
     *
     * @param   key   the property key.
     * @return  the value in this property list with the specified key value.
     * @see     #setProperty
     * @see     #defaults
     */
    public String getProperty(String key) {
        Object oval = super.get(key);
        String sval = (oval instanceof String) ? (String)oval : null;
        return ((sval == null) && (defaults != null)) ? defaults.getProperty(key) : sval;
    }

所以:实际上在向Properties对象中存储数据时调用用了Hashtable类的put(key, value)方法
而从Properties对象中取值时也是调用了Hashtable类的get(key)方法

之所以将Properties类的setProperty()方法的参数强制设置成String类型,要从设计Properties类的初衷说起:
Properties类的使命是读取存储在某些文件中的配置信息或资源

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
一楼的答得真好{:soso_e179:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马