目標:用一個代理類實現兩個相似類的調用
1.兩個相似類
Man類
Women類:
代理類:
package Reflect;
import od;
public class Person { //代理類
private Object target; //目標對象
private String methodName; //目標方法
private Object[] params; //參數數組
private Method method;
public Object getTarget() {
return target;
}
public void setTarget(Object target) {
et = target;
}
public String getMethodName() {
return methodName;
}
public void setMethodName(String methodName) {
odName = methodName;
}
public Object[] getParams() {
return params;
}
public void setParams(Object[] params) {
ms = params;
}
public Person(){
}
/**
* _重新設置目標方法
*/
private void reSetMethod(String methodName){
if(params!=null){ //目標方法有參數
int paramsLength = th;
Class[] paramsTypes = new Class[paramsLength];
for(int i=0;i
paramsTypes[i] = params[i]lass();
}
try {
method = lass()ethod(methodName,paramsTypes);
} catch (SecurityException e) {
tStackTrace();
} catch (NoSuchMethodException e) {
tStackTrace();
}
}
else //目標方法參數爲null
{
try {
method = lass()ethod(methodName,null);
} catch (SecurityException e) {
tStackTrace();
} catch (NoSuchMethodException e) {
tStackTrace();
}
}
}
/**
* _重新設置目標對象和方法
*/
private void reSetTarget(Object target,String methodName){
et = target;
tMethod(methodName);
}
/**
* _動態調用已綁定方法
*/
public void doMethod() throws Exception{
reSetTarget(target,methodName);
ke(target, params);
}
}