java类与对象的问题
遇到如下一个问题:
假如现在有6个类,分别是A,B,C,D,E,F
在A类里创建了B类的对象(B b=new B();)
在B类里创建了C类的对象(C c=new C();)
在C类里创建了D类的对象— d=new D();)
在D类里创建了E类的对象(E e=new E();)
在E类里创建了F类的对象(F f=new F();)
假设程序从A类一直执行到了F类里。
现在我要从F类里调用D类里的数据,然后再调用B类里的数据,该如何操作?
(原来创建了D类的对象,如果现在要在F类里再创建一个D的对象,就是开辟了一个新的对象空间,原来存储在D类的数据就不能被F类调用到了!用什么更好的办法?????) 类
[解决办法]
像你这种这么多层的调用,在实际项目中很常见,并没有什么问题。需要在F类中调用D类的中的数据,比较常用的方式是一层一层往下传,D传给E,E再传给F。其他的以此类推。
[解决办法]
public class ObjectReferencing {
public static class A {
}
public static class B {
public A a = new A();
}
public static class C {
public B b = new B();
}
public static class D {
public C c = new C();
}
/////////////////////////////////////////////////////////
public static void main(String[] args) {
D d = new D();
System.out.println("c is " + d.c);
System.out.println("b is " + d.c.b);
System.out.println("a is " + d.c.b.a);
}
}这样的引用都是很正常的。
[解决办法]
A a = new A();
F f = a.b.c.d.e.f;
B b = a.b;
D d = a.b.c.d;
然后就可以调了吧....
------解决方案--------------------
按你目前的设计来看是办不到的,因为你的F类对象没有直接或间接的持有之前创建的D类对象的引用。要想让F对象能找到D的对象,只能在F类里加一个D对象引用作为成员,并且将D对象赋给这个成员;当然也可以间接得到,比如,F里面有C,再通过C找D。
[解决办法]
在每一个类里都加一个域和一个有参构造器,把能够创建它的对象传递进来并存储,不过我不知道这么写的意义是是什么,也不知道对你有没有用,凑合着看一下思路吧
package com.test;
class A {
public void test() {
B b = new B(this);
}
public void print() {
System.out.println("A ...");
}
}
class B {
public A a;
public B(A a) {
this.a = a;
}
public void test() {
C c = new C(this);
}
public void print() {
System.out.println("B ...");
}
}
class C {
public B b;
public C(B b) {
this.b = b;
}
public void test() {
D d = new D(this);
}
public void print() {
System.out.println("C ...");
}
}
public class D {
public C c;
public D(C c) {
this.c = c;
}
public static void main(String[] args) {
D d = new D(new C(new B(new A())));
d.c.b.a.print();
}
}