在jdk1.5中,如何获得一个未声明泛型集合的泛型类型。看代码:
Map<String,User> map1 = new HashMap<String,User>();
Map map2 = map1;现在对你可见的就只有map2,有什么办法可以可以得知map2的泛型就是<String,User>呢????注意:遍历map2,获得key和value,再获得其类型不算解决方案。

解决方案 »

  1.   

    只要所有的Key 和 value都一样,两个Map对象就是Equal的
    Map <String,Calendar> map1 = new HashMap <String,Calendar>();
    map1.put("test", Calendar.getInstance());
    Map map2 = new HashMap(); 
    map2.put("test", Calendar.getInstance());
    System.out.print(map2.equals(map1));
    所以只能根据Key和value的类型来判断
      

  2.   

    如果未声明泛型的Map的key和value的类型都是一致的
    即这个Map厘面的key的类型是同一种类型,value的类型也全是同一种类型
    那么你只需要取出一对key和value判断不就行了如果不能保证这个Map里面的key和value的类型都是一致的,那么还有使用
    泛型的必要吗?
    不如直接用Map<Object, Object>了。
      

  3.   

    取出key和value一一判断其类型这是谁都能想到的办法
      

  4.   

    如果m2不是 <String,User>,能赋值成功吗
      

  5.   

    除此之外,没法判断吧。
    范型的作用,只是为了编程,在编译期使用。在执行的时候,根本没有作用。
    例如,现在 我定义 Map<User,String> map3=map2;(编译完全可以通过。)
    那你说,map3 是属于什么样的范型类型呢?
      

  6.   

    lz看这个帖子http://www.blogjava.net/ITdavid/archive/2008/02/28/182608.html
    关键点在:
    Type[] types = ((ParameterizedType) paramType).getActualTypeArguments();// 泛型类型列表
    这个可以取到map的泛型类型列表就是你的<Stirng, User>
      

  7.   

      不能判断
     map中 键值(key,value)
     它们的不确定性,没人能判断它们是什么类型或者对象
      

  8.   

    注意:遍历map2,获得key和value,再获得其类型不算解决方案。
    ------------------------------------------------------
    黑箱里面装个女的,你不看看怎么知道是不是美女?
    无论找啥解决方案什么api都是你要看的,别人说是美女也么的用,最终你还是要看
      

  9.   

    推荐看一下《Java Tiger技术高手秘籍》,里面有讲..