SUN认证考试知识点:Java反射机制的应用

时间:2020-09-26 13:19:55 SUN认证 我要投稿

SUN认证考试知识点:Java反射机制的应用

  目标:用一个代理类实现两个相似类的`调用

SUN认证考试知识点:Java反射机制的应用

  1.两个相似类

  Man类

  Women类:

  代理类:

  package Reflect;

  import java.lang.reflect.Method;

  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) {

  this.target = target;

  }

  public String getMethodName() {

  return methodName;

  }

  public void setMethodName(String methodName) {

  this.methodName = methodName;

  }

  public Object[] getParams() {

  return params;

  }

  public void setParams(Object[] params) {

  this.params = params;

  }

  public Person(){

  }

  /**

  * _重新设置目标方法

  */

  private void reSetMethod(String methodName){

  if(params!=null){ //目标方法有参数

  int paramsLength = params.length;

  Class[] paramsTypes = new Class[paramsLength];

  for(int i=0;i

  paramsTypes[i] = params[i].getClass();

  }

  try {

  method = target.getClass().getMethod(methodName,paramsTypes);

  } catch (SecurityException e) {

  e.printStackTrace();

  } catch (NoSuchMethodException e) {

  e.printStackTrace();

  }

  }

  else //目标方法参数为null

  {

  try {

  method = target.getClass().getMethod(methodName,null);

  } catch (SecurityException e) {

  e.printStackTrace();

  } catch (NoSuchMethodException e) {

  e.printStackTrace();

  }

  }

  }

  /**

  * _重新设置目标对象和方法

  */

  private void reSetTarget(Object target,String methodName){

  this.target = target;

  this.reSetMethod(methodName);

  }

  /**

  * _动态调用已绑定方法

  */

  public void doMethod() throws Exception{

  reSetTarget(target,methodName);

  this.method.invoke(target, params);

  }

  }

【SUN认证考试知识点:Java反射机制的应用】相关文章:

Sun java认证考试答案11-12

Sun Java认证考试科目10-03

sun java认证考试介绍10-03

sun java认证考试报考指南10-03

SUN JAVA认证介绍05-13

Sun java认证考试真题答案07-19

Sun认证Java开发员考试介绍10-25

Sun Java认证考试教材教辅10-03

SUN认证考试知识点:java servlet生命周期11-05