gpt4 book ai didi

java - 使用 javassist 创建非静态初始化程序

转载 作者:太空宇宙 更新时间:2023-11-04 08:04:07 26 4
gpt4 key购买 nike

据我所知,我可以使用 javassist 在 java 类中创建一个新的静态初始化程序。但我需要的是一个非静态初始化器。

所以不要添加:static{...} 到我只想添加 {..}

的类

我想这样做的原因是因为我想创建一个类加载器,它返回由 ProxyFactory 包装的类,因为我必须向某些类添加处理程序。我的想法是将此代码添加到每个类的非静态初始化程序中:((javassist.util.proxy.Proxy)this).setHandler(new library.proxy.Handler());

那么,有什么想法如何添加非静态初始值设定项吗?或者以不同的方式解决我的问题?非常感谢

最佳答案

在字节码级别,Java 中不存在非静态初始值设定项。您在源代码中创建的初始化程序(即 {} block )实际上合并为一个,并成为该类所有构造函数的一部分。

因此,如果您需要注入(inject)非静态 block ,则必须修补该类的构造函数。排序:

Constructor[] cs = ctClass.getConstructors();
for(Constructor c: cs) {
c.insertBefore("your code goes here");
}

关于java - 使用 javassist 创建非静态初始化程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12349327/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com