package reflect;
public class UserBean {
private int userId;
private String userName;
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
package reflect;
import java.beans.IntrospectionException;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class TestInvoke {
public static void main(String[] args) {
try {
Class c = Class.forName("reflect.UserBean");
Field[] fields = c.getDeclaredFields();
Object obj = c.newInstance();
for (Field f : fields) {//写值 set方法
PropertyDescriptor pd = new PropertyDescriptor(f.getName(), c);
Method method = pd.getWriteMethod();
if (method.getParameterTypes()[0].equals(Integer.TYPE)) {
method.invoke(obj, 24);
} else {
method.invoke(obj, "Kobe");
}
}
for (Field f : fields) {//读值 get方法
PropertyDescriptor pd = new PropertyDescriptor(f.getName(), c);
Method method = pd.getReadMethod();
Object result = method.invoke(obj);
System.out.println(result);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (IntrospectionException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}