java 反射 设置_使用反射设置 java实体属性值

/*** 功能描述:实体属性值设置

*@authorwy*/

public classReflectionUtils {/*** 功能描述:设置实体属性

* 参数 : obj 实体对象 | attrName 属性字段名 | attrValue 属性字段值*/

public static voidsetBeanAttr(Object obj, String attrName, Object attrValue) {//将属性名的首字母变为大写,为执行set/get方法做准备

String methodName = attrName.substring(0, 1).toUpperCase() + attrName.substring(1);

Method setMethod= null;

Method getMethod= null;try{

getMethod= obj.getClass().getMethod("get" +methodName);

setMethod= obj.getClass().getMethod("set" +methodName, getMethod.getReturnType());if (setMethod == null) {

setMethod= obj.getClass().getSuperclass().getMethod("set" +methodName, getMethod.getReturnType());

}if (setMethod != null)

setMethod.invoke(obj, converseType(attrValue, getMethod.getReturnType()));

}catch(Exception e) {

e.printStackTrace();

}

}/*** 功能描述:数据类型转换

* 参数 param 属性字段值 | paramClass 属性字段类型*/

public static Object converseType(Object param, Class>paramClass) {if("java.util.List".equals(paramClass.getName())){returnArrays.asList(param);

}//java.util.List java.util.Set//如果是自定义类型 通过返回值类型 实例化此类 给实例赋值 然后将实例set给引用的对象

if(!isJavaClass(param.getClass())){

System.out.println(param.getClass().getSimpleName()+"---------ceshi--------------");returnparam;

}//基本数据类型

String paramString =(String) param;if (String.class.equals(paramClass))returnparamString;if ((Boolean.TYPE.equals(paramClass)) || (Boolean.class.equals(paramClass)))returnBoolean.valueOf(paramString);if ((Byte.TYPE.equals(paramClass)) || (Byte.class.equals(paramClass)))returnByte.valueOf(Byte.parseByte(paramString));if ((Short.TYPE.equals(paramClass)) || (Short.class.equals(paramClass)))returnShort.valueOf(paramString);if ((Integer.TYPE.equals(paramClass)) || (Integer.class.equals(paramClass)))returnInteger.valueOf(Integer.parseInt(paramString));if ((Long.TYPE.equals(paramClass)) || (Long.class.equals(paramClass)))returnLong.valueOf(Long.parseLong(paramString));if ((Float.TYPE.equals(paramClass)) || (Float.class.equals(paramClass)))returnFloat.valueOf(Float.parseFloat(paramString));if ((Double.TYPE.equals(paramClass)) || (Double.class.equals(paramClass))|| (Number.class.equals(paramClass))) {returnDouble.valueOf(Double.parseDouble(paramString));

}returnparamString;

}public static boolean isJavaClass(Class>clz) {return clz != null && clz.getClassLoader() == null;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值