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();
}
}