这是一个非常重要, 但也是一般很容易被接受的前提; 只要遵守下面几点就可以满足要求:
对象没有public的实例属性
protected和package的实例属性也不要在同一个包的其他类中直接读写
static的类方法不要直接访问对象实例属性
这在一般的java应用程序中是很容易做到的.
在处理事务时需要考虑其他代码对对象实例属性的访问, 但是在java目前的平台上, 要跟踪对象属性的访问似乎只能通过Java Virtual Machine Profiler Interface (JVMPI), 而这显得有些蹩脚, 不仅会霸占这个排他的接口而让需要它的java程序无法运行, 本身的执行效率也会打个折扣. AspectJ在这方面也仅仅是巧言声明: 它"被容许"只处理所能触及到的java代码, 它编译过程所触及不到的java代码对对象属性的访问可以不用截获.
而有了现在这个前提, 就可以不必须跟踪对象实例属性的访问, 而只是跟踪对象实例方法的调用, 假定对对象实例方法的调用都会访问其实例属性, 读或者写; 这会包含一些并不会访问实例属性的方法, 可能还有一些返回值虽然从实例属性计算得来, 但不会因对象属性被更新而变化的方法, 不过这些方法应该从比例上只是一小部分, 而且概念上认为他们访问了对象实例属性也可以成立.