java invoke 2【动态调用类的方法】
1.User.java【同java invoke 1中的User】
2.Go2.java
package cvr.go;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
import cvr.vo.User;
public class Go2 {
public static void main(String[] args) {
int val[] = new int[]{11,12,13,14,15,16,17,18,19,20};
User user = new User();
try {
Class cla = user.getClass();
Object obj = cla.newInstance();//新的实例
for (int i = 1; i <= 10; i++) {
String methodName = "value"+i;
PropertyDescriptor pd = new PropertyDescriptor(methodName, cla);
Method method = pd.getWriteMethod();//获得写方法
//method.invoke(obj, val[i-1]);
method.invoke(user, val[i-1]);//user 表示使用那个实例,如果用obj【新的实例】,在下文中若使用user将没有如何改变
PropertyDescriptor pd2 = new PropertyDescriptor(methodName, cla);
Method rM = pd2.getReadMethod();//获得读方法
//Integer num = (Integer) rM.invoke(obj);
Integer num = (Integer) rM.invoke(user);
System.out.println("value"+i+"="+num);
}
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(user);
}
}