日期:2014-05-20  浏览次数:21200 次

java中,怎么让两个对象互相持有对方的引用?
如题。如果处理不好,就会发生空指针异常啊。。。
我需要在编程的时候,A a记住B b,B b记住 A a。但是我想不出有什么办法可以互相记住对方。
谢谢各位!!!
------解决方案--------------------
A类B类都定义一个对方类型的变量!用set方法把对方成员变量传入不就可以了!

package com.xiuxiu.table;

public class A {
private B b;
public B getB() {
return b;
}
public void setB(B b) {
this.b = b;
}
public static void main(String[] args) {
A a = new A();
B b = new B();
a.setB(b);
b.setA(a);
}
}

class B {
private A a;
public A getA() {
return a;
}
public void setA(A a) {
this.a = a;
}
}

------解决方案--------------------
引用:
如题。如果处理不好,就会发生空指针异常啊。。。
我需要在编程的时候,A a记住B b,B b记住 A a。但是我想不出有什么办法可以互相记住对方。
谢谢各位!!!

互相记住的话,只需要相互定义成属性就可以了!
而防止空指针的话,可以加个非空校验if(a==null){}, 或者直接定义成构造函数来set,这样new的时候就必须加进去了!

class A{
    private B b;
    public A(B b) {
        this.b = b;
    }
}

------解决方案--------------------
class Producer
{
private Consumer c = null;
Producer(Consumer c)
{
this.c = c;
c.firstMethod();   //持有对方引用
}

public void secondMethod()
{
System.out.println("Producer.");
}

}

class Consumer
{
private Producer p = null;
Consumer(Producer p)
{
this.p = p;
p.secondMethod();   //持有对方引用
}

public void firstMethod()
{
System.out.println("Consumer.");
}

}