一、實體類java
package com.ljb.app.model;app
import java.io.Serializable;maven
/**
* 序列化實體類
* @author LJB
* @version 2015年2月10日
*/
public class Student implements Serializable{
private String name;
private int age;
private String gender;
private transient String password;
public Student () {};
public Student(String name, int age, String gender , String password) {
super();
this.name = name;
this.age = age;
this.gender = gender;
this.password = password;
}ide
public String getName() {
return name;
}this
public void setName(String name) {
this.name = name;
}spa
public int getAge() {
return age;
}.net
public void setAge(int age) {
this.age = age;
}對象
public String getGender() {
return gender;
}get
public void setGender(String gender) {
this.gender = gender;
}it
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + ", gender=" + gender
+ "]";
}
}
二、調用get方法
package com.ljb.app.my_first_maven;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import com.ljb.app.model.Student;
/**
* 利用反射調用方法
* @author LJB
* @version 2015年3月2日
*/
public class MethodCallTest {
/**
* @param args
*/
public static void main(String[] args) {
// 建立實例對象
Student stu = new Student();
stu.setName("張三");
// 利用反射調用get方法
Class cla = Student.class;
try {
// 獲取名稱爲getName的方法
Method meth = cla.getMethod("getName", null);
// 調用指定對象的該方法,獲取name值
try {
String name = (String) meth.invoke(stu, null);
System.out.println(name);
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
運行結果:張三
三、調用set方法
package com.ljb.app.my_first_maven;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import com.ljb.app.model.Student;
/**
* 利用反射調用方法
* @author LJB
* @version 2015年3月2日
*/
public class MethodCallTest {
/**
* @param args
*/
public static void main(String[] args) {
// 建立實例對象
Student stu = new Student();
stu.setName("張三");
// 獲取Class類對象
Class cla = Student.class;
// 利用反射調用set方法
try {
// 獲取方法
Method setMeth = cla.getMethod("setName", String.class);
// 調用方法,傳入參數
setMeth.invoke(stu, "李四");
String name = stu.getName();
System.out.println(name);
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
運行結果:李四
四、若是是private方法
使用setAccessible(Boolean flag)
true 爲取消權限; false 爲實施權限檢查