反射深入 通过反射中的Consrtuctor类调用有参构造方法 普通方法Method

来源:互联网 发布:dtxmania软件下载 编辑:程序博客网 时间:2024/05/29 13:36
package cn.com.mooc.study1;
import java.lang.reflect.*;
/*
 * 反射深入 通过反射中的Consrtuctor类调用有参构造方法  普通方法Method
 */
public class ConstructorReflect {


public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, SecurityException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
Class<?> cls=Class.forName("cn.com.mooc.study1.Person4");
Constructor<?> con=cls.getConstructor(String.class,int.class);
Object obj=con.newInstance("aa",21);
Person4 per=(Person4)obj;
System.out.println(per);
String str="name";
String str1="age";
      Method  setmethod1=cls.getMethod("set"+Capicity(str),String.class);
 Method  setmethod2=cls.getMethod("set"+Capicity(str1),int.class);
 Method getMethod1=cls.getMethod("get"+Capicity(str));
 Method getMethod2=cls.getMethod("get"+Capicity(str1));
      setmethod1.invoke(obj, "bb");
      setmethod2.invoke(obj,22);
      System.out.println(getMethod1.invoke(obj));
      System.out.println(getMethod2.invoke(obj));
}
  public static String Capicity(String s)
  {
 return s.substring(0,1).toUpperCase()+s.substring(1);
  }
}
class Person4
{
 private String name;
 private int age;
 public Person4(){};
 public Person4(String name)
 {
this.name=name;
 }
 public Person4(String name,int age)
 {
this.name=name;
this.age=age;
 }
 @Override
 public String toString()
 {
return "姓名:"+this.name+",年龄:"+this.age;
 }
 public void setName(String name)
 {
this.name=name;
 }
 public void setAge(int age)
 {
this.age=age;
 }
 public int getAge()
 {
return this.age;
 }
 public String getName()
 {
return this.name;
 }
}
0 0
原创粉丝点击