Field writer拦截器

时间:2016-05-02 12:58:19

标签: java byte-buddy

我正在研究Byte Buddy,我正试图用它取代CGLib。我想知道是否有办法实现拦截写入任何字段。我不知道字段类型,我不想更改指定的值。我只想在任何访问中记录field written!

示例:如果我有这个课程:

public class Ex {
    public int i;
    public String s;
    public boolean b;
}

稍后我这样做:

Ex e = new Ex();
e.i=1;
System.out.println("Value of i:" + i);
e.s="hello";
System.out.println("Value of s:" + hello);

它应输出:

field written!
Value of i: 1
field writed!
Value of s: hello

自定义工具下的帮助页面中,有一个示例,但不清楚。

1 个答案:

答案 0 :(得分:0)

不,那是不可能的。这是你用cglib做的事吗?因为this is neither possible using Byte Buddy nor using cglib

问题是不会动态调度字段。您需要重新定义访问该字段的任何类,而不是重新定义包含该字段的类。