您的位置:首页 > 其它

通过反射把一个类的值传给另外一个类

2018-02-08 15:08 176 查看
【注】:该方法有些限制,1:仅支持参数名相同、类型相同的参数,仅支持其余类型转String,2:不支持包含泛型的,如List,Set,Map等类的转换,自己定义的类不包含泛型的可以。
public static <T> T assign(Object source, Class<T> clazz) {
try {
T target = clazz.newInstance();
Class sourceClass = source.getClass();
Field[] fields = sourceClass.getDeclaredFields();
for (Field field : fields) {
field.setAccessible(true);
Object value = field.get(source);
if (value != null){
Class fType = field.getType();
Field field1;
try {
//如果source的参数不在目标类中,会报错并跳过。
                        field1 = clazz.getDeclaredField(field.getName());
} catch (NoSuchFieldException ne){
continue;
}
Class cType = field1.getType();
field1.setAccessible(true);
if (!fType.equals(cType)){
//如果目标类是字符串的话其余的类可以转成字符串
                        if (cType.equals(String.class)){
                            field1.set(target,value.toString());
}
} else {
field1.set(target,value);
}
}
}
return target;
} catch (Exception e){
e.printStackTrace();
}
return null;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐