如何动态修改 java.lang 类?
2022-09-03 05:31:13
我正在寻找一种方法,通过重写字节代码并重新加载类来动态地将字段添加到线程中,不确定这是否可能。欢迎任何指点。我发现了一些关于修改和加载类的信息,我知道JRebel可以无缝地热交换你的代码,但不确定相同的方法/工具是否适用于这里。
这里的动机是探索一种理论上更好的线程局部对象替代方案。如果该方法有效,我应该能够用注释替换线程本地,并且结果应该优于当前的JDK实现。
PS:请拯救我“一切邪恶言论的根源”
澄清用例:
想象一下,我有一个带有ThreadLocal的类:
class A {
ThreadLocal<Counter> counter;
...
counter.get().inc()
}
我想用注释替换它:
class A {
@ThreadLocal
Counter counter;
...
counter.inc()
}
但是,我不想生成上面的代码,而是要改变Thread,以便Thread现在将具有一个Acounter字段,实际代码将是:
class A {
// Nothing here, field is now in Thread
...
Thread.currentThread().Acounter.inc()
}