在jdk1.5中,如何获得一个未声明泛型集合的泛型类型。看代码:
Map<String,User> map1 = new HashMap<String,User>();
Map map2 = map1;现在对你可见的就只有map2,有什么办法可以可以得知map2的泛型就是<String,User>呢????注意:遍历map2,获得key和value,再获得其类型不算解决方案。
Map<String,User> map1 = new HashMap<String,User>();
Map map2 = map1;现在对你可见的就只有map2,有什么办法可以可以得知map2的泛型就是<String,User>呢????注意:遍历map2,获得key和value,再获得其类型不算解决方案。
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的类型来判断
即这个Map厘面的key的类型是同一种类型,value的类型也全是同一种类型
那么你只需要取出一对key和value判断不就行了如果不能保证这个Map里面的key和value的类型都是一致的,那么还有使用
泛型的必要吗?
不如直接用Map<Object, Object>了。
范型的作用,只是为了编程,在编译期使用。在执行的时候,根本没有作用。
例如,现在 我定义 Map<User,String> map3=map2;(编译完全可以通过。)
那你说,map3 是属于什么样的范型类型呢?
关键点在:
Type[] types = ((ParameterizedType) paramType).getActualTypeArguments();// 泛型类型列表
这个可以取到map的泛型类型列表就是你的<Stirng, User>
map中 键值(key,value)
它们的不确定性,没人能判断它们是什么类型或者对象
------------------------------------------------------
黑箱里面装个女的,你不看看怎么知道是不是美女?
无论找啥解决方案什么api都是你要看的,别人说是美女也么的用,最终你还是要看