在Java中是否有办法表示只能通过o本身访问对象o的属性x(我的意思是用点符号o.x)?要明确:我在谈论像Smalltalk中的对象级访问,而不是类级访问(因此私有不够私有)?
我很抱歉 - 我确定之前已经多次询问过,但我在搜索时似乎选择了错误的关键字。
答案 0 :(得分:1)
在Java中是不可能的(没有什么比标记为“私有”的字段更私密),但是如果你考虑它,它也是合乎逻辑的:你只能在公共类源中修改其他对象的私有字段代码,如果你控制类源代码,你可以做任何坏事或好事。
顺便说一句,你可以通过反射访问其他类的私有变量,如果没有安装安全管理器,或者安全管理器的策略允许,请参阅:Why is it allowed to access Java private fields via reflection?
答案 1 :(得分:0)
你想做什么是不可能的。每个对象都有自己的一组实例变量,只要它们不是静态的,就可以通过该对象访问。简而言之,如果您只希望该对象可以访问Java对象的属性,请保持该对象的存活:)。