例如有类class A {public int ia;B b = new B();}和类class B {public int ib;}
客户端:A a = new A(); 想当a.ia时实际访问a.b.ib。能提供思路者即给分。谢谢。

解决方案 »

  1.   

    public int ia ------->private int ia;
    添加针对ia的get,set方法,在get,set方法里返回,或设置地都是b.ib的值
    =================================================================
    间接实现你的功能,
    想完全实现a.ia时实际访问a.b.ib应该不可以,参数为int,java里没有指针
      

  2.   

    谢谢。
    但该变量是没有get,set方法,直接打点访问,即a.ia。(有get/set方法的已经解决)。
      

  3.   

    谢谢。
    但该变量是没有get,set方法,直接打点访问,即a.ia。(有get/set方法的已经解决)。
      

  4.   


    如果知道在访问a.ia,就可以让它去访问a.b.ib。
      

  5.   

    要解决这个问题,你只需要建立双向引用即可,在你的A类中设置对B b属性的get和set方法
    而在B类中最好也设置一个A类的引用,这样双方就可以实现同步通信了
      

  6.   

    打点访问(a.ia)怎么调用get/set方法?
      

  7.   

    你能改Class A的源代码吧?
      

  8.   

    可以。
    请问如何改写?目的只有一个,访问a.ia就会访问a.b.ib。
      

  9.   

    必须是直接访问 a.ia的这种方式吗?
    通过动态代理技术行不行 ?
      

  10.   

    是的,直接访问 a.ia的这种方式
      

  11.   


    这样定义ia:public int ia=b.ib;
      

  12.   

    放到B b = new B();后面定义ia;
      

  13.   


    用查找/替换的功能,把所有的a.ia替换成a.b.ia不就行了
      

  14.   


    个人觉得除了使用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是可行的,其它应该也会有相应的方法可以访问。但打点行不通。
      

  15.   

    我也觉得用getter/setter方法好,跟直接访问有什么区别?没必要这么固执么,还可以完成你的要求。
      

  16.   

    感谢各位的回复。
    这个问题起源于对AOP中一个问题的研究,既然没有理想的解决方案,就想想其它办法了。
      

  17.   

    在A的构造函数里进行定义B 
    B b=new B();
    this.ia=b.ib;
    这样是不是可以
      

  18.   

    用getter/setter是最好的。否则即使这个问题可以解决,也难保以后不出现其它问题,因为直接访问属性的隐患非常多,等项目越来越大了,再去修改就真的来不及了,所以越是初期的设计就越要精心,要严格按规范来。
      

  19.   

    新手,感觉有点深奥,,,,,,学习ing........