hi;
    使用java开发。现在某一个类中有一个函数A 被其他的类中使用,我怎样通过程序检测到有那些地方使用了 函数A。

解决方案 »

  1.   

    spring aop 对那个方法作拦截。
      

  2.   

    在被调用的函数中打印日志验证一下
    在调用时把自身的类名传到该方法中
    method(String classname,[*]){
        log.info(classname+"调用此方法"); 
        ********
    }
      

  3.   

    按照楼主的要求,AOP和LOG都不算个好的解决办法,这是个JVM非常底层的问题,肯定有办法通过JVMPI检索当前堆栈,不是我能力范围内了,不过值得说的是,AOP和LOG都不符合组件化的思想,组件化的思想必须首先假定其应用系统已经存在,而且不容得修改内部实现的前提。也就是说应该首先假设需要检测方法都被谁调用的类的实现已经完成并且没有AOP,而且最好不要通过动态代理或者AOP修改对象的创建过程,那么只能通过检索堆栈了。组件化思想最好的实现方式就是假设自己写的代码没有源代码,那么如果你想得到没有源代码应用系统的某个类的某个方法,怎么做?