您可以使用
FieldProxy
按字段名称访问字段。您需要安装
FieldProxy.Binder
并在
MethodDdelegation
因为它需要一个自定义类型用于类型安全检测。这个
java文档
解释了如何做到这一点。或者,您可以使用
@This
JVM在优化反射的使用方面非常有效。
例如:
interface FieldGetter {
Object getValue();
}
interface FieldSetter {
void setValue(Object value);
}
public class SetterInterceptor {
@RuntimeType
public Object intercept(@FieldProxy("stringVal") FieldGetter accessor) {
Object value = accessor.getValue();
System.out.println("Invoked method with: " + value);
return value;
}
}
对于bean属性
字段代理
注释不需要显式名称,但可以从截获的getter或setter的名称中发现名称。
安装方法如下:
MethodDelegation.to(SetterInterceptor.class)
.appendParameterBinder(FieldProxy.Binder.install(FieldGetter.class,
FieldSetter.class));