可以假定对象的属性全部由对象本身的方法来访问

本文探讨了在Java中确保对象安全性的几种方法,包括限制对实例属性的访问和使用静态类方法等。文章还讨论了如何避免直接访问对象实例属性,并提出了通过跟踪对象实例方法调用来间接监控实例属性访问的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是一个非常重要, 但也是一般很容易被接受的前提; 只要遵守下面几点就可以满足要求:

   对象没有public的实例属性

   protected和package的实例属性也不要在同一个包的其他类中直接读写

   static的类方法不要直接访问对象实例属性

这在一般的java应用程序中是很容易做到的.

在处理事务时需要考虑其他代码对对象实例属性的访问, 但是在java目前的平台上, 要跟踪对象属性的访问似乎只能通过Java Virtual Machine Profiler Interface (JVMPI), 而这显得有些蹩脚, 不仅会霸占这个排他的接口而让需要它的java程序无法运行, 本身的执行效率也会打个折扣. AspectJ在这方面也仅仅是巧言声明: 它"被容许"只处理所能触及到的java代码, 它编译过程所触及不到的java代码对对象属性的访问可以不用截获.

而有了现在这个前提, 就可以不必须跟踪对象实例属性的访问, 而只是跟踪对象实例方法的调用, 假定对对象实例方法的调用都会访问其实例属性, 读或者写; 这会包含一些并不会访问实例属性的方法, 可能还有一些返回值虽然从实例属性计算得来, 但不会因对象属性被更新而变化的方法, 不过这些方法应该从比例上只是一小部分, 而且概念上认为他们访问了对象实例属性也可以成立.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值