java - 改变 Java 中静态方法的行为 - 字节码操作

标签 java bytecode java-bytecode-asm bytecode-manipulation byte-buddy

我正在尝试操作静态方法。为此,Byte Buddy或可以使用任何其他框架。

有一个名为 Pi4J 的库用于控制Raspberry Pi的GPIO。这个库有一个方法叫做:

GpioController gpio = GpioFactory.getInstance();

这个调用在程序的几个地方被调用,我可能无法控制,因此我需要修改调用。

我想做的是,当以某种方式执行GpioFactory.getInstance时,检测并修改GpioController的方法,以便它们记录它们已被调用。

也许唯一的解决方案是使用 AspectJ,但是您知道 Byte Buddy 是否可以作为解决方案吗?

最佳答案

Pi4J 的代码在 LGPL 许可下在 github 上开源。您可以简单地克隆存储库,根据您的需要进行修改并使用自己的版本。如果您觉得您的更改也可以帮助其他人,请考虑为 pi4j 做出贡献。

关于java - 改变 Java 中静态方法的行为 - 字节码操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34479909/

相关文章:

java - 列出java编译器在编译过程中需要的所有类

java - 使用 Byte Buddy 拦截对我的 Java 和 Groovy 代码的方法调用 : Strange java. lang.VerifyError

java - 如何调用抽象类的非抽象方法?

java - 监听器垃圾收集说明(Java/Android)

java - 如何抓取antlr4错误输出?

Java JDBC 执行过程

java - 如果所有从java源码编译出来的字节码都可以反编译成java源码呢?

java - Android 获取设备的 key 列表

java - 在asm中什么时候会调用ClassVisitor的visitMethod?

java - dup 和 dup_x2 之间的区别