0

我正在研究 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

Custom Instrumentation下的帮助页面中,有一个示例,但不清楚。

4

1 回答 1

0

不,那是不可能的。这是您使用 cglib 做的事情吗?因为这既不可能使用 Byte Buddy 也不使用 cglib

问题是字段不是动态分派的。您不需要重新定义包含该字段的类,而是需要重新定义访问该字段的任何类,这几乎是不可能的。

于 2016-05-03T10:22:08.667 回答