package pers.zuqiuy.testdir;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
public class MethodInvoke {
public String name = "初始化名字";
public String sex;
public MethodInvoke() {
// TODO Auto-generated constructor stub
}
public MethodInvoke(String name) {
this.name = name;
// TODO Auto-generated constructor stub
}
public MethodInvoke(String name, String sex) {
this.name = name;
this.sex = sex;
// TODO Auto-generated constructor stub
}
public static void main(String[] args) throws Exception {
// 获取class
Class<?> classType = MethodInvoke.class;
/*
* 还有两种方式 Class<?> classType = new MethodInvoke().getClass(); Class<?>
* classType = Class.forName("pers.zuqiuy.testdir.MethodInvoke");
*/
Object MethodInvoke = classType.newInstance();// 新建实例,调用无参构造方法
Method method = classType.getMethod("getName");// 获取方法
Object resultObject = method.invoke(MethodInvoke);//调用方法,返回name
System.out.println(resultObject);
Constructor<?> constructor = classType.getConstructor(String.class);//调用有参构造方法
//Constructor<?> constructor = classType.getConstructor();//调用无参构造方法,等价于Object MethodInvoke = classType.newInstance()
Object object = constructor.newInstance("初始化了名字");
Method getMethodName = classType.getMethod("getName");
System.out.println(getMethodName.invoke(object));
Method setMethodName = classType.getMethod("setName", String.class);
setMethodName.invoke(object, "改名字了");
System.out.println(getMethodName.invoke(object));
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
Java反射备忘
最新推荐文章于 2024-07-15 22:27:18 发布