您现在的位置是:首页 >

spring中反射的运用 Java反射机制的应用例子

火烧 2021-04-25 21:14:07 1057
Java反射机制的应用例子   目标 用一个代理类实现两个相似类的调用   两个相似类  Ma 类  Wome 类  代理类   ackage Reflect   im ort java la g r

Java反射机制的应用例子  

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

   两个相似类

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

  thodName = 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;

spring中反射的运用 Java反射机制的应用例子

  Class<?>[] paramsTypes = new Class<?>[paramsLength];

  for(int i= ;i<paramsLength;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);

  thod invoke(target params);

  }

  }

  调用示例

lishixinzhi/Article/program/Java/hx/201311/25780  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码