JAVA反射实现基本的copyProperty,getProperty,isEmpty方法

import java.lang.reflect.InvocationTargetException;

public class BeanUtils {
    public static Object getProperty (Object bean, String name) {
     Class c = bean.getClass();
     try {
   Method m = c.getDeclaredMethod(name, new Class[0]);
   return m.invoke(bean, new Object[0]);
  } catch (SecurityException e) {
   e.printStackTrace();
  } catch (NoSuchMethodException e) {
   e.printStackTrace();
  } catch (IllegalArgumentException e) {
   e.printStackTrace();
  } catch (IllegalAccessException e) {
   e.printStackTrace();
  } catch (InvocationTargetException e) {
   e.printStackTrace();
  }
  return null;
    }
   
    public static void copyProperty (Object org, Object dest) {
     Class orgClass = org.getClass();
     Class destClass = dest.getClass();
     Method[] orgMethods = orgClass.getMethods();
     Method[] destMethods = destClass.getMethods();
     for (Method md : destMethods) {
      if (md.getName().indexOf("set") != -1) {
       for (Method mo : orgMethods) {
        if (mo.getName().indexOf("get") != -1 &&
          mo.getName().substring(mo.getName().indexOf("get") + 3).equals(md.getName().substring(md.getName().indexOf("set") + 3))) {
         try {
       md.invoke(dest, mo.invoke(org, null));
      } catch (IllegalArgumentException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
      } catch (IllegalAccessException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
      } catch (InvocationTargetException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
      }
        }
       }
      }
     }
    }
}

 

 public boolean isEmpty() throws IllegalArgumentException, IllegalAccessException{
  boolean flg = true;
  Class c = this.getClass();
  for (Field f : c.getDeclaredFields()) {
   f.setAccessible(true);
   if (f.getType().getSimpleName().equals("String")) {
    if (f.get(this) != null) {
     flg = false;
    }
   } else if (f.getType().getSimpleName().equals("int")) {
    if (0 != (Integer)f.get(this)) {
     flg = false;
    }
   }
  }
  return flg;
 }

 

上面的代码只是今天做的几个小练习,为了备忘放在这上面。

今天下了个Apache的BeanUtils包,有时间详细研究下真正BeanUtils中的方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值