该行:
test.address.postal_code = "12345";
将产生如下流程:
before-get test.address
return test.address
after-get test.address
before-set test.address.postal_code
set postal_code
after-set test.address.postal_code
在AspectJ中。 是否存在将测试作为目标的切入点(如before-get test.adddres和after-get test.address),但是会在“after-set test.address.postal_code”之后发生?
答案 0 :(得分:1)
不,因为您的代码行等同于:
Object address = test.address;
address.postal_code = "12345";
即。两个字段访问(首先读取,然后写入)一个接一个地完成。像你一样以“流利”的方式链接它们只是语法糖。顺便说一句,如果您的Test
课程可以直接访问Address
成员,那么您无论如何都会遇到封装问题,但这只是个人评论。
如果你想知道地址是否被分配给另一个类的成员,你需要在方面内保持状态,这可能但有点脏。也许你想改变应用程序设计,而不是修复糟糕的设计与hacky方面。的; - )强>