其实反射可以做到的。
Spring里面就有AOP的例子类似这个。

解决方案 »

  1.   


    敢不敢详细说明啊大哥昨天看AOP  没觉得是我要的东西。。
      

  2.   

    这个就是个类似于过滤器的功能。
    AOP你用一下就知道了,
    当你A调用B的时候,中间有个C能得到A传给B的东西,如果不用AOP,可以用JAVA动态代理能达到你的要求。
      

  3.   


    package com.birds.aop;public interface Action {
       public void process(String msg);
    }package com.birds.aop;public class MyAction implements Action { @Override
    public void process(String msg) {
    System.out.println("result:" + msg);
    }}public class MyHandler implements InvocationHandler {

    private Object obj; public MyHandler() { }

    public Object newProx(Object obj){
    this.obj = obj;
    return Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj.getClass().getInterfaces(), this);
    } /*
     * (non-Javadoc)
     * 
     * @see java.lang.reflect.InvocationHandler#invoke(java.lang.Object,
     * java.lang.reflect.Method, java.lang.Object[])
     */
    @Override
    public Object invoke(Object arg0, Method method, Object[] arg2)
    throws Throwable {
    System.out.println("=============" + method + "," + arg2);
    if (arg2 != null) {
    for (Object pm : arg2) {
    System.out.println("what:" + pm);
    }
    }
    return null;
    } public static void main(String[] args) {
    MyHandler handler = new MyHandler();
    Action action = (Action) handler.newProx(new MyAction());
    action.process("Hello,guys");
    }
    }
    只要执行process方法,就会自动调用invoke方法,你在这个方法里面能看到是什么参数,调用了什么方法。
      

  4.   

    你好,你这个应该不能完成我想要的。你这个只是监视而已。我昨天看了。我要的不是监视,监视的话  反射我都不需要的。我只需要注册个消息。我需要的是   当A调用B的时候,调用的B是我的代码,由我的代码决定传给B的是什么。
    你们搞JAVA的是不是根本不需要hook的啊?
    或者你们搞java的都不用Windows平台吗?你们可以看看Windows平台hook的意思。我要的是那个。
    现在 A点到B点是直达的。我要实现的是,在A点到B点这个过程中设立关卡。这样总能明白了吧?