我正在使用 byte-buddy 在 Ignite 之上构建一个 ORM,我们需要向一个类添加一个字段,然后在方法拦截器中访问它。
所以这是一个例子,我在一个类中添加一个字段
final ByteBuddy buddy = new ByteBuddy();
final Class<? extends TestDataEnh> clz = buddy.subclass(TestDataEnh.class)
.defineField("stringVal",String.class)
.method(named("setFieldVal")).intercept(
MethodDelegation.to(new SetterInterceptor())
)
.make()
.load(getClass().getClassLoader(), ClassLoadingStrategy.Default.WRAPPER)
.getLoaded();
final TestDataEnh enh = clz.newInstance();
enh.getFieldVal();
enh.setFieldVal();
System.out.println(enh.getClass().getName());
而拦截器是这样的
public class SetterInterceptor {
@RuntimeType
public Object intercept() {
System.out.println("Invoked method with: ");
return null;
}
}
那么如何将新字段的值输入拦截器,以便更改它的值?(字符串值)
提前致谢