我现在有个Map<String , Object> map , 需要依据key对map的value进行强转,比如说 Map<"student",Student> , Map<"teacher",Teacher> 我想依据key对object动态强转, 跪求大神给点思路
------解决方案--------------------
public static void map(Map<String ,Object> map){
Set<Map.Entry<String ,Object>> e=map.entrySet();
for(Map.Entry<String ,Object> s:e){
try {
mapToBean(s.getValue(),Class.forName(s.getKey()));
} catch (ClassNotFoundException e1) {
e1.printStackTrace();
}
}
}
public static <T>T mapToBean(Object obj,Class<T> B) {
return (T)obj;
}
------解决方案--------------------
Key用String类型的不太安全,可用Class类型:
public class RefMapTest {
public static void main(String[] args) {
Map<Class,Object> map = new HashMap<Class, Object>();
map.put(String.class, "abc");
map.put(Integer.class, 22);
for(Map.Entry<Class, Object> entry:map.entrySet()){
Class clz = entry.getKey();
Object obj = entry.getValue();
System.out.println(clz.cast(obj));
}
}
}
这样的转换2L方法类似,但是感觉和不转换直接使用value也没啥区别,不知道LZ想要什么效果。