测试代码
package com.hrf.reflect04;
import java.lang.reflect.Method;
public class Test {
public static void main(String[] args) throws Exception {
test03();
}
public static void test01() {
Person person = new Person();
System.out.println("name = " + person.getName());
}
public static void test02() throws Exception {
Class<Person> aClass = Person.class;
Person person = aClass.newInstance();
Method[] declaredMethods = aClass.getDeclaredMethods();
for (Method method : declaredMethods) {
String methodName = method.getName();
if (methodName.indexOf("get") != -1) {
Object invoke = method.invoke(person);
System.out.println(methodName + " = " + invoke);
}
}
}
public static void test03() throws Exception {
Class<Person> aClass = Person.class;
Person person = aClass.newInstance();
Method[] declaredMethods = aClass.getDeclaredMethods();
for (Method method : declaredMethods) {
String methodName = method.getName();
if (methodName.indexOf("set") != -1) {
Class<?> type = method.getParameterTypes()[0];
String typeName = type.getSimpleName().toString();
if ("String".equals(typeName)) {
method.invoke(person, "abc");
} else if ("Integer".equals(typeName)) {
method.invoke(person, 1);
} else if ("Double".equals(typeName)) {
method.invoke(person, 1.2);
} else if ("Long".equals(typeName)) {
method.invoke(person, 2L);
}
}
}
System.out.println(person);
}
}
Person实体类
package com.hrf.reflect04;
public class Person {
private Integer id = 1001;
private String name = "张三";
private String sex = "女";
public Person() {
}
public Person(Integer id, String name, String sex) {
super();
this.id = id;
this.name = name;
this.sex = sex;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
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;
}
@Override
public String toString() {
return "Person [id=" + id + ", name=" + name + ", sex=" + sex + "]";
}
}