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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 戚兴海 中级黑马   /  2014-3-4 17:05  /  865 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 戚兴海 于 2014-3-4 17:08 编辑

Properties是HashTable的子类,用取出Map集合的方式出去里面的元素,关于泛型的使用有点小问题,代码如下
  1. import java.util.*;

  2. class getProperties
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 Properties prop = System.getProperties();
  7.                
  8.                 Set<Map.Entry<Object,Object>> entrySet = prop.entrySet();
  9.                
  10.                 Iterator<Map.Entry<Object,Objec>> it = entrySet.iterator();
  11.                
  12.                 while(it.hasNext())
  13.                 {
  14.                         Map.Entry me = it.next();
  15.                         String key = (String)me.getKey();
  16.                         String value = (String)me.getValue();
  17.                         
  18.                         System.out.println(key+"::"+value);
  19.                 }
  20.                
  21.         }
  22. }
复制代码
这里的泛型部分为什么用<String,String>不行呢? 看了API文档,里面写的直接就是用Object,属性信息里面存的不都是字符串吗

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

4 个回复

倒序浏览
是这个集合中就没有定义泛型吗?
回复 使用道具 举报
因为你的getKey和getValue的返回值就是Object
  1. import java.util.Iterator;
  2. import java.util.Map;
  3. import java.util.Map.Entry;
  4. import java.util.Properties;
  5. import java.util.Set;

  6. class getProperties
  7. {
  8.         public static void main(String[] args)
  9.         {
  10.                 Properties prop = System.getProperties();
  11.                
  12.                 Set<Map.Entry<Object, Object>> entrySet = prop.entrySet();
  13.                
  14. //                Iterator<Entry<Object, Object>> it = entrySet.iterator();
  15. //               
  16. //                while(it.hasNext())
  17. //                {
  18. //                        Map.Entry me = it.next();
  19. //                        String key = (String)me.getKey();
  20. //                        String value = (String)me.getValue();
  21. //                        
  22. //                        System.out.println(key+"::"+value);
  23. //                }
  24.                 for( Iterator<Map.Entry<Object, Object>> it = entrySet.iterator();it.hasNext();){
  25.                         //迭代
  26.                         Map.Entry me    =           it.next();
  27.                 String key =(String)         me.getKey();
  28.                 String val =(String)         me.getValue();
  29.                 System.out.println(key+".."+val);
  30.                
  31.                 }
  32.                
  33.         }
  34. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
public class Properties extends Hashtable<Object,Object>
这个是Properites的API定义,它继承了HashTab,键值都是Object类型
属性列表中每个键及其对应值都是一个字符串
这个就有点像向上类型兼容了,Object是父类,那么可以String提升
但是不能直接把Object转换成String吧,
Properites的getPropety传入的是字符串,返回的是字符串,因为它的源码里进行了将Object向String类型的转换

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
薛旻 发表于 2014-3-4 18:38
public class Properties extends Hashtable
这个是Properites的API定义,它继承了HashTab,键值都是Object ...

恩,只考虑输出了,没考虑到Properties成员的定义形式
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马