Java 反射

public  void init(String...objs){
  try {
   for(String obj:objs){
    if(obj!=null && obj.trim().length()>0){
     //获取变量的get方法
     Method method=getClass().getMethod("get"+varMethodName(obj), null);
     //调用get方法,判断对象是否已初始化
     if (method.invoke(this, null)==null) {
      //获取get方法返回类型,即变量类型,然后动态创建对象
      initObj(method.getReturnType().toString(), obj);
     }
    }
   }
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
 /**
  * 初始化指定变量
  */
 @SuppressWarnings("rawtypes")
 public  void initObj(String className,String varName) throws InstantiationException, IllegalAccessException, ClassNotFoundException, SecurityException, NoSuchMethodException, IllegalArgumentException, InvocationTargetException{
  
  //获取名全名
  Class clazz=Class.forName(className.replaceFirst("class ", "").replaceFirst("interface ", ""));
  //动态创建对象
  Object obj=clazz.newInstance();
  //获取变量的set方法
  Method method=getClass().getMethod("set"+varMethodName(varName), clazz);
  //调用set方法
  method.invoke(this, obj);
 }
 /**
  * 把变量名第一个字设置为大写
  * @return
  */
 public String varMethodName(String varName){
  if (varName!=null && varName.trim().length()>0) {
   return varName.replaceFirst(varName.substring(0, 1),varName.substring(0, 1).toUpperCase());
  }
  return varName;
 }

你可能感兴趣的:(反射,java反射,reflection)