Java中利用工具类对bean实体类所有属性赋值
- 这里做一下简单的说明
这里做一下简单的说明
#1.我在实际开发过程中,调外部系统时,发送报文,报文会通过bean转换成xml的形式发送出去,这时候空的bean转换后的形式不符合要求,就需要给空的bean的属性赋空值。
#2.这里提供一个工具类,此工具类的作用是给bean实体类所有属性统一赋值,Stirng类型的属性赋值"",int类型的属性赋值0,BigDecimal类型的属性赋值0。目前只支持这三种类型,需要别的类型可自己进行工具类的修改,也可在下方留言。
工具类代码如下
import java.lang.reflect.Field;
import java.math.BigDecimal;
/**
*
* @Description: 对象类bean操作
* @author Yangshuxin
*
*/
public class BeanValueUtil {
/**
* @Title: setValue
* @Description: 给对象类bean的属性统一赋值
* @param s 待赋值的对象类bean
* @param value 给对象属性要赋的值(默认:String为"",int为0,BigDecimal为0)
* @throws Exception
* @author yangshuxin
* @date 2020-03-16 10:12:21
*/
public static void setValue(Object s, String value) throws Exception{
try {
Class<? extends Object> c = s.getClass();
Field[] fs = c.getDeclaredFields();
for(Field f:fs){
//f为单个属性
String name = f.getName();//获取属性名
String type = f.getType().getSimpleName();
Field d = c.getDeclaredField(name);
d.setAccessible(true);
if("String".equals(type)) {
try {
d.set(s, value);
} catch (Exception e) {
d.set(s, "");
System.out.println("属性" + name + "赋默认值空");
}
}
int valueInt = 0;
if("int".equals(type)) {
try {
valueInt = Integer.parseInt(value);
d.set(s, valueInt);
} catch (Exception e) {
d.set(s, valueInt);
System.out.println("属性" + name + "赋默认值0");
}
}
BigDecimal valueBigDecimal = new BigDecimal(0);
if("BigDecimal".equals(type)) {
try {
valueBigDecimal = new BigDecimal(value);
d.set(s, valueBigDecimal);
} catch (Exception e) {
d.set(s, valueBigDecimal);
System.out.println("属性" + name + "赋默认值0");
}
}
}
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
}