我希望使用一个切面(aspect)来为私有id字段添加getter和setter。我知道如何通过切面添加方法,但是我应该如何访问私有的id字段呢?
我认为只需要使切面具有特权就可以了。我尝试了以下代码,但是切面无法访问id字段。
一种可能的方法是像这篇博客中所示,使用反射:http://blog.m1key.me/2011/05/aop-aspectj-field-access-to-inejct.html 除了使用反射外,是否有使用AspectJ实现的方法?
我认为只需要使切面具有特权就可以了。我尝试了以下代码,但是切面无法访问id字段。
public privileged aspect MyAspect {
public String Item.getId(){
return this.id;
}
一种可能的方法是像这篇博客中所示,使用反射:http://blog.m1key.me/2011/05/aop-aspectj-field-access-to-inejct.html 除了使用反射外,是否有使用AspectJ实现的方法?
this.s
是未知字段。我猜你的例子只有在类和切面在同一个包甚至同一个物理切面文件中才能工作,或者它已经不再起作用了。但是使用thisJoinPoint.getThis()...
可以通过接口注入的方式访问私有字段来解决这个问题。 - Andreas Covidiot