package com.etime.pojo;
public class User {
private String name;
private String addr;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", addr='" + addr + '\'' +
", age=" + age +
'}';
}
}
import com.etime.pojo.User;
import org.junit.Test;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class ReflectTest {
@Test
public void test1() throws NoSuchMethodException, InstantiationException, IllegalAccessException, InvocationTargetException, NoSuchFieldException, ClassNotFoundException {
Class userClass = User.class;
User user2 = new User();
Class userClass2 = user2.getClass();
Class<?> aClass = Class.forName("com.etime.pojo.User");
Object user = userClass.newInstance();
Constructor constructor = userClass.getConstructor();
Object o1 = constructor.newInstance();
Method getNames = userClass.getMethod("getName");
Object invoke = getNames.invoke(user);
System.out.println("name:"+invoke);
Field field = userClass.getDeclaredField("age");
field.setAccessible(true);
field.set(user,18);
Object o = field.get(user);
System.out.println("user:"+o);
Method setAddr = userClass.getMethod("setAddr", String.class);
setAddr.invoke(user,"大温江");
Method getAddr = userClass.getMethod("getAddr");
Object addr = getAddr.invoke(user);
System.out.println("addr:"+addr);
System.out.println(user);
}
}