package com.wen;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class Test2 {
public static void main(String [] args){
try {
Class<?> classtype = Class.forName("com.wen.Test1");
Field[] fields = classtype.getDeclaredFields();
for(Field f:fields){
//打开私有属性的开关
f.setAccessible(true);
String fieldName=f.getName();
//截取字符串首字母大写拼接Get Set 方法名
String firstLetter = fieldName.substring(0,1).toUpperCase();
//拼接属性对应的Get方法的名字
String getMethodName = "get"+firstLetter + fieldName.substring(1);
//拼接属性对应的Set方法名字
String setMethodName = "set"+firstLetter+fieldName.substring(1);
//获取get方法
Method getmethod = classtype.getMethod(getMethodName, new Class[]{});
//获取Set方法
Method setmethod = classtype.getMethod(setMethodName, new Class[]{f.getType()});
//调用构造方法创建对象 返回一个Object的对象
Object obj = classtype.getConstructor(new Class[]{int.class, String.class}).newInstance(
new Object[]{1, "战三"});
//执行get方法
Object value=getmethod.invoke(obj,new Object[]{});
//执行set方法
Object invoke = setmethod.invoke(obj, new Object[]{value});
//测试结果输出 1 张三
System.out.println("执行了我们的"+getMethodName+"返回结果是" + value);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}