public int ia ------->private int ia; 添加针对ia的get,set方法,在get,set方法里返回,或设置地都是b.ib的值 ================================================================= 间接实现你的功能, 想完全实现a.ia时实际访问a.b.ib应该不可以,参数为int,java里没有指针
个人觉得除了使用getter/setter,是没办法完成这个工作的。即便是采用16楼和18楼的建议。 因为public int ia=b.ib,这个ia为int类型,这个类型只存放数据的复本,而并非引用。 换句话说,就是当实例化类A时,ia默认值是0,就算public int ia=b.ib,那最多ia的值与b.ib在值在此时是一致的。但因为它只是b.ib值的复本,而非引用。所以,当b.ib的值发生变化时,a.id的值并不会随之变化。要实时通过a.ia得到b.ib的值,通过打点访问,理论上是行不通的。当然,getter/setter是可行的,其它应该也会有相应的方法可以访问。但打点行不通。
添加针对ia的get,set方法,在get,set方法里返回,或设置地都是b.ib的值
=================================================================
间接实现你的功能,
想完全实现a.ia时实际访问a.b.ib应该不可以,参数为int,java里没有指针
但该变量是没有get,set方法,直接打点访问,即a.ia。(有get/set方法的已经解决)。
但该变量是没有get,set方法,直接打点访问,即a.ia。(有get/set方法的已经解决)。
如果知道在访问a.ia,就可以让它去访问a.b.ib。
而在B类中最好也设置一个A类的引用,这样双方就可以实现同步通信了
请问如何改写?目的只有一个,访问a.ia就会访问a.b.ib。
通过动态代理技术行不行 ?
这样定义ia:public int ia=b.ib;
用查找/替换的功能,把所有的a.ia替换成a.b.ia不就行了
个人觉得除了使用getter/setter,是没办法完成这个工作的。即便是采用16楼和18楼的建议。
因为public int ia=b.ib,这个ia为int类型,这个类型只存放数据的复本,而并非引用。
换句话说,就是当实例化类A时,ia默认值是0,就算public int ia=b.ib,那最多ia的值与b.ib在值在此时是一致的。但因为它只是b.ib值的复本,而非引用。所以,当b.ib的值发生变化时,a.id的值并不会随之变化。要实时通过a.ia得到b.ib的值,通过打点访问,理论上是行不通的。当然,getter/setter是可行的,其它应该也会有相应的方法可以访问。但打点行不通。
这个问题起源于对AOP中一个问题的研究,既然没有理想的解决方案,就想想其它办法了。
B b=new B();
this.ia=b.ib;
这样是不是可以