我在动态代理类Proxy的invoke方法中,需要获得代理的类的一个方法:getMethod(String name, Class<?>... parameterTypes)。我需要获得的那个方法有参数,参数是一个VO类的对象。那在getMethod中的Class<?>...parameterTypes这个参数应该怎么写呢?急求 在线等

解决方案 »

  1.   

    getParameterTypes(),返回当前方法的参数类型数组(Class<?>),你再判断这个类型是不是VO
      

  2.   


    没明白=。=invoke方法invoke(Object proxy, Method method,Object[] args),参数args怎么转化成getMethod的参数Class<?>...parameterTypes这种类型啊
      

  3.   


    public class App {
    public static void main(String[] args) {
    Inter vo = (Inter) Proxy.newProxyInstance(App.class.getClassLoader(), VO.class.getInterfaces(), new InvocationHandler() { @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
    if (args[0].getClass() == VO.class) {
    System.out.println("相同");
    }
    return null;
    }
    });
    vo.getString(new VO()); }
    }interface Inter {
    public void getString(VO v);
    }class VO implements Inter { public void getString(VO v) {
    System.out.println("--------------");
    }
    }
      

  4.   


    if (args[0] instanceof VO) {
    System.out.println("相同");
    }
      

  5.   

    或者用:if (VO.class.isInstance(args[0])) {
    System.out.println("相同");
    }