当前位置: 首页 > 面试题库 >

如何检测Java方法?

尹俊贤
2023-03-14
问题内容

我想编写一个简单的Java代理,它可以打印所检测的Java程序调用的方法的名称。

例如,我要检测的Java程序是:

public class TestInstr {

public static void sayHello() {
    System.out.println("Hello !");
}

public static void main(String args[]) {
    sayHello();
    sayHello();
    sayHello();
 }

}

我想显示这样的东西:

method sayHello has been called
Hello !
method sayHello has been called
Hello !
method sayHello has been called
Hello !

谢谢你的帮助!


问题答案:

您可以使用Javassist之类的工具库来执行此操作。

让我为您提供一个方法的示例,您可以使用Javassist或反射将其扩展到所有方法:

ClassPool pool = ClassPool.getDefault();
CtClass cc = pool.get("TestInstr");
CtMethod m = cc.getDeclaredMethod("sayHello");
m.insertBefore("{ System.out.println(\"method sayHello has been called\"); }");
cc.writeFile();
检查此链接以获取详细信息: http
// www.csg.ci.iu-
tokyo.ac.jp/~chiba/javassist/tutorial/tutorial2.html#intro


 类似资料:
  • 问题内容: 我使用的是Swift,我希望能够在旋转到风景时加载UIViewController,有人可以指出正确的方向吗? 我在网上找不到任何东西,并且对文档有些困惑。 问题答案: 这是我的工作方式: 在里面 我把函数: 然后在AppDelegate类中放入以下函数: 希望这对其他人有帮助! 谢谢!

  • 问题内容: 我尝试了一些方法来检测代码中的EOF,但仍然无法正常工作。我尝试使用BufferedReader,Scanner和char u001a标记EOF,但对我的代码仍然没有任何意义。这是我的最后一个代码: 该程序应该在到达EOF时停止运行,但是我不知道为什么,由于某些原因,它会继续运行并导致运行时错误。请帮忙。顺便说一句,我是新来的,如果对我的问题还不清楚,很抱歉,谢谢您:) 问题答案: 由

  • 问题内容: 我试图将自定义行为添加到系统类(FileInputStream / FileOutputStream)。我用以下转换方法编写了自定义ClassFileTransformer: 当我运行示例程序时: 我看到没有系统类没有传递给转换。 有什么办法可以修改系统类?提前致谢! 问题答案: 在调用pre- main方法并添加ClassFileTransformer之前,已经加载了一些(不是全部)

  • 我尝试了一些方法来检测我的代码中的EOF,但它仍然不起作用。我试过使用BufferedReader、Scanner和使用charu001a来标记EOF,但仍然对我的代码没有任何意义。这里是我的最后一段代码: 程序应该在已经到达EOF时停止,但我不知道为什么,由于某些原因,它继续运行并导致运行时错误。请帮帮忙。顺便说一下,我是新来的,如果我的问题不是很清楚,很抱歉不能理解,谢谢你之前:)

  • 问题内容: 我想将两个图像添加到单个图像视图(即,用于横向显示一个图像,用于纵向显示另一个图像),但是我不知道如何使用快速语言检测方向变化。 我尝试了这个答案,但只拍了一张图片 我是iOS开发的新手,任何建议将不胜感激! 问题答案:

  • 我想在单个图像视图中添加两幅图像(即横向一幅图像和纵向另一幅图像),但我不知道如何使用swift语言检测方向变化。 我试过这个答案但它只需要一个图像 我是iOS开发新手,如有任何建议,将不胜感激!