有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在类中使用nanotime()入口/出口点的最小侵入性方法?

我在JavaSwing中有一个MVC应用程序,我想测量代码库中各个入口点和出口点的nanotime()。作为一个玩具示例,考虑类^ {< CD2>},方法A通过z:

public class Foo(){
    private void A(){
       do task A1()
       do task A2()
    }
    private void B(){...}
    ....
    private void Z(){ 
       do task Z1()
       do task Z2()}
 }

我需要修改方法A()和Z()以输出nanotime():

public class Foo(){
    private void A(){
       do task A1();
       do task A2();
       System.out.println("Entry time: " + System.nanotime());
    }
    private void B(){...}
    ....
    private void Z(){ 
       do task Z1();
       do task Z2();
       System.out.println("Exit time: " + System.nanotime());
       }
 }

问题是,我希望在不更改Foo()源代码的情况下进行此评测。实际上,我需要做的不仅仅是打印纳米时间,而且分析会扰乱实际的方法逻辑;我想不出一个切实可行的办法。一种方法是子类Foo(),并重载方法;然而,这似乎很难处理,因为代码库中还有其他几个类需要这样的处理。我不想创建4个新的子类,只想在代码中添加跟踪点

在Python中,我可以在运行时重载这些方法(monkey patching),并将其封装在某个探查器对象中

Java中是否有类似的框架/方法?我见过动态代理,但不太明白它们是否适合这种情况


共 (0) 个答案