1.创建一个User类
public class User {
private String username;
private String password;
private String name;
public User(){
}
public User(String name){
this.name = name;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "User [username=" + username + ", password=" + password + ", name=" + name + "]";
}
}
2.创建ReflexTest测试类
public class ReflexTest {
/**
* 获取属性名
*/
public static void fieldTest(){
Field[] declaredFields = User.class.getDeclaredFields();
for (Field field : declaredFields) {
System.out.println(field.getName());
}
}
/**
* 属性赋值
* @throws IllegalAccessException
* @throws IllegalArgumentException
* @throws SecurityException
* @throws NoSuchFieldException
* @throws InstantiationException
*/
public static void fieldAssignmentTest() throws IllegalArgumentException, IllegalAccessException, NoSuchFieldException, SecurityException, InstantiationException{
Object paraen = User.class.newInstance();
Field declaredFields = User.class.getDeclaredField("name");
declaredFields.setAccessible(true);
declaredFields.set(paraen,"123");
System.out.println(declaredFields.get(paraen));
}
/**
* 获取构造
* @throws SecurityException
* @throws NoSuchMethodException
* @throws IllegalAccessException
* @throws InstantiationException
*/
public static void structure() throws NoSuchMethodException, SecurityException, InstantiationException, IllegalAccessException{
Object paraen = User.class.newInstance();
Constructor<?>[] constructors = User.class.getConstructors();
for (Constructor<?> constructor : constructors) {
System.out.println(constructor);
}
}
/**
* 获取set方法赋值
* get方法输出
* @throws SecurityException
* @throws NoSuchMethodException
* @throws IllegalAccessException
* @throws InstantiationException
* @throws InvocationTargetException
* @throws IllegalArgumentException
*/
public static void setMethod() throws NoSuchMethodException, SecurityException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{
Object paraen = User.class.newInstance();
Method method = User.class.getMethod("setName", String.class);
method.invoke(paraen, "小鸡鸡");
Method methods = User.class.getMethod("getName");
String name = (String)methods.invoke(paraen);
System.out.println(name);
}
public static void main(String[] args) throws NoSuchFieldException, SecurityException, InstantiationException, NoSuchMethodException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
// 获取属性名
// fieldTest();
/*try {
//属性赋值
fieldAssignmentTest();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}*/
//获取所有构造方法
// structure();
//获取set方法并赋值,get方法输出
// setMethod();
}
}